Sha256: bebca76700ff2d3ba78389f3bf07ef4f8183f3c8029474bed0186378f7c48790

Contents?: true

Size: 1.63 KB

Versions: 26

Compression:

Stored size: 1.63 KB

Contents

# frozen_string_literal: true

require 'eac_cli/definition/argument_option'
require 'eac_cli/definition/boolean_option'
require 'eac_cli/definition/positional_argument'
require 'eac_ruby_utils/core_ext'

module EacCli
  class Definition
    require_sub __FILE__
    attr_accessor :description
    attr_accessor :options_argument

    def initialize
      self.description = '-- NO DESCRIPTION SET --'
      self.options_argument = true
    end

    def alt(&block)
      r = ::EacCli::Definition.new
      r.instance_eval(&block)
      alternatives << r
      r
    end

    def alternatives
      @alternatives ||= []
    end

    def arg_opt(short, long, description, option_options = {})
      options << ::EacCli::Definition::ArgumentOption.new(
        short, long, description, option_options
      )
    end

    def bool_opt(short, long, description, option_options = {})
      options << ::EacCli::Definition::BooleanOption.new(short, long, description, option_options)
    end

    def desc(description)
      self.description = description
    end

    def options_arg(options_argument)
      self.options_argument = options_argument
    end

    def options
      @options ||= []
    end

    def pos_arg(name, arg_options = {})
      positional << ::EacCli::Definition::PositionalArgument.new(name, arg_options)
    end

    def positional
      @positional ||= []
    end

    def subcommands
      positional << ::EacCli::Definition::PositionalArgument.new('subcommand', subcommand: true)
    end

    def options_first(enable = true)
      @options_first = enable
    end

    def options_first?
      @options_first ? true : false
    end
  end
end

Version data entries

26 entries across 26 versions & 3 rubygems

Version Path
avm-tools-0.76.0 vendor/eac_cli/lib/eac_cli/definition.rb
avm-tools-0.75.1 vendor/eac_cli/lib/eac_cli/definition.rb
avm-tools-0.75.0 vendor/eac_cli/lib/eac_cli/definition.rb
avm-tools-0.74.1 vendor/eac_cli/lib/eac_cli/definition.rb
avm-tools-0.74.0 vendor/eac_cli/lib/eac_cli/definition.rb
avm-tools-0.73.0 vendor/eac_cli/lib/eac_cli/definition.rb
avm-tools-0.72.0 vendor/eac_cli/lib/eac_cli/definition.rb
eac_cli-0.9.0 lib/eac_cli/definition.rb
avm-tools-0.71.0 vendor/eac_cli/lib/eac_cli/definition.rb
avm-tools-0.70.2 vendor/eac_cli/lib/eac_cli/definition.rb
ehbrs-tools-0.15.0 vendor/eac_cli/lib/eac_cli/definition.rb
ehbrs-tools-0.14.1 vendor/eac_cli/lib/eac_cli/definition.rb
avm-tools-0.70.1 vendor/eac_cli/lib/eac_cli/definition.rb
avm-tools-0.70.0 vendor/eac_cli/lib/eac_cli/definition.rb
avm-tools-0.69.3 vendor/eac_cli/lib/eac_cli/definition.rb
eac_cli-0.8.0 lib/eac_cli/definition.rb
ehbrs-tools-0.14.0 vendor/eac_cli/lib/eac_cli/definition.rb
eac_cli-0.7.0 lib/eac_cli/definition.rb
avm-tools-0.69.2 vendor/eac_cli/lib/eac_cli/definition.rb
avm-tools-0.69.1 vendor/eac_cli/lib/eac_cli/definition.rb