Sha256: 97400ac8d11853eefb91995801edbad7a80272127017b578c70c5ca332406f9a

Contents?: true

Size: 1.36 KB

Versions: 6

Compression:

Stored size: 1.36 KB

Contents

# -*- encoding : utf-8 -*-

require "optparse"

module Cardio
  class Commands
    class RakeCommand
      # parse decko/card -specific options for rake
      class Parser < OptionParser
        ONS = {
          production: {
            desc: "production database (default)"
          },
          test: {},
          development: {},
          all: {
            desc: "production, test, and development database",
            envs: %w[production development test]
          }
        }.freeze

        def initialize command, opts
          super() do |parser|
            parser.banner = "Usage: decko #{command} [options]\n\n" \
                            "Run decko:#{command} task on the production "\
                            " database specified in config/database.yml\n\n"
            parser_ons parser, command do |env_array|
              opts[:envs] = env_array
            end
          end
        end

        def parser_ons parser, command
          ONS.each do |env, vals|
            parser.on(*parser_on_opts(env, command, vals[:desc])) do
              yield (vals[:envs] || [env.to_s])
            end
          end
        end

        def parser_on_opts env, command, desc
          main = "--#{env}"
          short = "-#{env.to_s[0]}"
          desc ||= "#{env} database"
          [main, short, "#{command} #{desc}"]
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
card-1.103.4 lib/cardio/commands/rake_command/parser.rb
card-1.103.3 lib/cardio/commands/rake_command/parser.rb
card-1.103.2 lib/cardio/commands/rake_command/parser.rb
card-1.103.1 lib/cardio/commands/rake_command/parser.rb
card-1.103.0 lib/cardio/commands/rake_command/parser.rb
card-1.102.0 lib/cardio/commands/rake_command/parser.rb