Sha256: 217c7524245436befc953d93294ff28dd5f01a5d18b4e2d59fba62eb015b157b

Contents?: true

Size: 1.52 KB

Versions: 14

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) }.compact_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

14 entries across 14 versions & 2 rubygems

Version Path
eac_cli-0.42.0 lib/eac_cli/runner_with/help/builder/alternative.rb
eac_cli-0.40.1 lib/eac_cli/runner_with/help/builder/alternative.rb
eac_cli-0.40.0 lib/eac_cli/runner_with/help/builder/alternative.rb
eac_cli-0.39.0 lib/eac_cli/runner_with/help/builder/alternative.rb
eac_cli-0.38.1 lib/eac_cli/runner_with/help/builder/alternative.rb
eac_tools-0.82.0 sub/eac_cli/lib/eac_cli/runner_with/help/builder/alternative.rb
eac_tools-0.81.0 sub/eac_cli/lib/eac_cli/runner_with/help/builder/alternative.rb
eac_tools-0.80.0 sub/eac_cli/lib/eac_cli/runner_with/help/builder/alternative.rb
eac_tools-0.79.0 sub/eac_cli/lib/eac_cli/runner_with/help/builder/alternative.rb
eac_tools-0.78.0 sub/eac_cli/lib/eac_cli/runner_with/help/builder/alternative.rb
eac_tools-0.77.1 sub/eac_cli/lib/eac_cli/runner_with/help/builder/alternative.rb
eac_tools-0.77.0 sub/eac_cli/lib/eac_cli/runner_with/help/builder/alternative.rb
eac_cli-0.38.0 lib/eac_cli/runner_with/help/builder/alternative.rb
eac_tools-0.76.1 sub/eac_cli/lib/eac_cli/runner_with/help/builder/alternative.rb