Sha256: 399fe989b800499622f48ba4ba895b2c2827e2deed107c6b140cf3d6d99fafea

Contents?: true

Size: 1.06 KB

Versions: 49

Compression:

Stored size: 1.06 KB

Contents

module Rack::App::CLI::Command::Configurator

  extend self

  def configure(command, name, options_parser)

    attach_definitions(command, options_parser, command.class.option_definitions)
    update_banner(command, name, options_parser.banner)

  end

  protected

  def attach_definitions(command, optparse, option_definitions)
    option_definitions.each do |h|
      optparse.on(*h[:args]) do |*args|
        command.instance_exec(*args, &h[:block])
      end
    end
  end

  def update_banner(command, name, banner)

    banner.sub!('[options]', "#{name} [options]")

    # [[:req, :a], [:opt, :b], [:rest, :c], [:keyreq, :d], [:keyrest, :e]]
    (command.method(:action).parameters rescue []).each do |type, keyword|
      case type
        when :req
          banner.concat(" <#{keyword}>")

        when :opt
          banner.concat(" [<#{keyword}>]")

        when :rest, :keyrest
          banner.concat(" [<#{keyword}> <#{keyword}> ...]")

      end
    end

    banner.concat("\n\n")
    banner.concat(command.class.description)
    banner.concat("\n\n")

  end

end

Version data entries

49 entries across 49 versions & 1 rubygems

Version Path
rack-app-7.2.2 lib/rack/app/cli/command/configurator.rb
rack-app-7.2.1 lib/rack/app/cli/command/configurator.rb
rack-app-7.2.0 lib/rack/app/cli/command/configurator.rb
rack-app-7.1.0 lib/rack/app/cli/command/configurator.rb
rack-app-7.0.0 lib/rack/app/cli/command/configurator.rb
rack-app-6.8.0 lib/rack/app/cli/command/configurator.rb
rack-app-6.7.1 lib/rack/app/cli/command/configurator.rb
rack-app-6.7.0 lib/rack/app/cli/command/configurator.rb
rack-app-6.6.0 lib/rack/app/cli/command/configurator.rb
rack-app-6.5.0 lib/rack/app/cli/command/configurator.rb
rack-app-6.4.1 lib/rack/app/cli/command/configurator.rb
rack-app-6.4.0 lib/rack/app/cli/command/configurator.rb
rack-app-6.3.3 lib/rack/app/cli/command/configurator.rb
rack-app-6.3.2 lib/rack/app/cli/command/configurator.rb
rack-app-6.3.1 lib/rack/app/cli/command/configurator.rb
rack-app-6.3.0 lib/rack/app/cli/command/configurator.rb
rack-app-6.2.0 lib/rack/app/cli/command/configurator.rb
rack-app-6.1.0 lib/rack/app/cli/command/configurator.rb
rack-app-6.0.0 lib/rack/app/cli/command/configurator.rb
rack-app-5.12.0 lib/rack/app/cli/command/configurator.rb