Sha256: 7a536402e78850442caadcb755ebc52ceb6d167a7cb49190c179a959fcac099d

Contents?: true

Size: 881 Bytes

Versions: 8

Compression:

Stored size: 881 Bytes

Contents

# encoding: UTF-8

require 'anvil/task'

module Anvil
  # Parser for anvil command line arguments and options
  class Parser < OptionParser
    attr_accessor :options
    attr_accessor :task

    def options
      @options ||= {}
    end

    def arguments(args = nil)
      return @arguments if @arguments
      @arguments = [args.presence].compact.flatten
    end

    def banner
      unless @banner
        @banner = banner_string
        visit(:add_banner, @banner)
      end

      @banner
    end

    def banner_string
      args = arguments.map(&:upcase).join(' ')
      message = "Usage: anvil #{task.task_name}"
      message += " #{args}" unless args.empty?
      message += ' [options]'

      message
    end

    def from(name)
      task_klass = Anvil::Task.from_name(name)
      instance_eval(&task_klass.parser_block) if task_klass.parser_block
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
anvil-core-0.4.2 lib/anvil/parser.rb
anvil-core-0.4.1 lib/anvil/parser.rb
anvil-core-0.4.0 lib/anvil/parser.rb
anvil-core-0.3.2 lib/anvil/parser.rb
anvil-core-0.3.1 lib/anvil/parser.rb
anvil-core-0.3.0 lib/anvil/parser.rb
anvil-core-0.2.0 lib/anvil/parser.rb
anvil-core-0.1.0 lib/anvil/parser.rb