Sha256: a4a4bce80e839482917dd8a7130813be488a76ccfb5d46f354a49f3317c2752f

Contents?: true

Size: 1.37 KB

Versions: 16

Compression:

Stored size: 1.37 KB

Contents

# -*- coding: utf-8 -*-
#
# Copyright 2013 whiteleaf. All rights reserved.
#

require "optparse"

module Command
  class CommandBase
    def initialize(postfix = "")
      @opt = OptionParser.new(nil, 20)
      @opt.banner = ("<bold><green>" +
                     TermColor.escape("Usage: narou #{self.class.to_s.scan(/::(.+)$/)[0][0].downcase} #{postfix}") +
                     "</green></bold>").termcolor
      @options = {}
    end

    def execute(argv)
      @opt.parse!(argv)
    rescue OptionParser::InvalidOption => e
      error "不正なオプションです(#{e})"
      exit 1
    rescue OptionParser::MissingArgument => e
      error "オプションの引数が不正です(#{e})"
      exit 1
    end

    def load_local_settings
      command_prefix = self.class.to_s.scan(/[^:]+$/)[0].downcase
      local_settings = LocalSetting.get["local_setting"]
      local_settings.each do |name, value|
        if name =~ /^#{command_prefix}\.(.+)$/
          @options[$1] = value
        end
      end
    end

    #
    # 普通にコマンドを実行するけど、exit(2) を補足してexitstatus を返す
    # 正常終了なら0
    #
    def self.execute_and_rescue_exit(argv)
      self.new.execute(argv)
    rescue SystemExit => e
      e.status
    else
      0
    end

    def oneline_help(msg)
      ""
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
narou-1.5.7.1 lib/commandbase.rb
narou-1.5.7 lib/commandbase.rb
narou-1.5.6.1 lib/commandbase.rb
narou-1.5.6 lib/commandbase.rb
narou-1.5.5.1 lib/commandbase.rb
narou-1.5.5 lib/commandbase.rb
narou-1.5.4 lib/commandbase.rb
narou-1.5.3 lib/commandbase.rb
narou-1.5.2.1 lib/commandbase.rb
narou-1.5.2 lib/commandbase.rb
narou-1.5.1 lib/commandbase.rb
narou-1.5.0.2 lib/commandbase.rb
narou-1.5.0.1 lib/commandbase.rb
narou-1.5.0 lib/commandbase.rb
narou-1.4.6 lib/commandbase.rb
narou-1.4.5 lib/commandbase.rb