Sha256: 90ce8707a8fd373c7cd9d914aa6f4dde8ef852cb82de7ce56d2d4f78e595fb64

Contents?: true

Size: 1.52 KB

Versions: 133

Compression:

Stored size: 1.52 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/core_ext'

module EacCli
  module RunnerWith
    module Help
      class Builder
        class Alternative
          enable_method_class

          SUBCOMMANDS_MACRO = '__SUBCOMMANDS__'

          common_constructor :builder, :alternative

          def result
            (
              program_name +
                alternative.options_argument?.if_present([]) { |_v| ['[options]'] } +
                options +
                positionals
            ).join(builder.word_separator)
          end

          def options
            alternative.options.select(&:show_on_usage?).map do |option|
              ::EacCli::RunnerWith::Help::Builder.option_long(option)
            end
          end

          def option_argument(option)
            b = option.long
            b += '=<value>' if option.argument?
            b
          end

          def positionals
            alternative.positional.map { |p| positional(p) }.reject(&:blank?)
          end

          def positional(positional)
            return unless positional.visible?

            if positional.subcommand?
              SUBCOMMANDS_MACRO
            else
              r = "<#{positional.name}>"
              r += '...' if positional.repeat?
              r = "[#{r}]" if positional.optional?
              r
            end
          end

          def program_name
            r = builder.runner.program_name
            r = [r] unless r.is_a?(::Enumerable)
            r
          end
        end
      end
    end
  end
end

Version data entries

133 entries across 133 versions & 3 rubygems

Version Path
eac_tools-0.76.0 sub/eac_cli/lib/eac_cli/runner_with/help/builder/alternative.rb
eac_tools-0.75.2 sub/eac_cli/lib/eac_cli/runner_with/help/builder/alternative.rb
eac_cli-0.37.0 lib/eac_cli/runner_with/help/builder/alternative.rb
eac_tools-0.75.1 sub/eac_cli/lib/eac_cli/runner_with/help/builder/alternative.rb
eac_tools-0.75.0 sub/eac_cli/lib/eac_cli/runner_with/help/builder/alternative.rb
eac_tools-0.74.1 sub/eac_cli/lib/eac_cli/runner_with/help/builder/alternative.rb
eac_tools-0.74.0 sub/eac_cli/lib/eac_cli/runner_with/help/builder/alternative.rb
eac_cli-0.36.0 lib/eac_cli/runner_with/help/builder/alternative.rb
eac_tools-0.73.0 sub/eac_cli/lib/eac_cli/runner_with/help/builder/alternative.rb
eac_tools-0.72.0 sub/eac_cli/lib/eac_cli/runner_with/help/builder/alternative.rb
eac_tools-0.70.1 sub/eac_cli/lib/eac_cli/runner_with/help/builder/alternative.rb
eac_tools-0.70.0 sub/eac_cli/lib/eac_cli/runner_with/help/builder/alternative.rb
eac_tools-0.69.1 sub/eac_cli/lib/eac_cli/runner_with/help/builder/alternative.rb
eac_tools-0.69.0 sub/eac_cli/lib/eac_cli/runner_with/help/builder/alternative.rb
eac_cli-0.35.1 lib/eac_cli/runner_with/help/builder/alternative.rb
eac_cli-0.34.1 lib/eac_cli/runner_with/help/builder/alternative.rb
eac_tools-0.68.0 sub/eac_cli/lib/eac_cli/runner_with/help/builder/alternative.rb
eac_tools-0.67.1 sub/eac_cli/lib/eac_cli/runner_with/help/builder/alternative.rb
eac_cli-0.35.0 lib/eac_cli/runner_with/help/builder/alternative.rb
eac_tools-0.67.0 sub/eac_cli/lib/eac_cli/runner_with/help/builder/alternative.rb