class Meroku::Options

This class handles command line options.

Public Class Methods

new() click to toggle source
# File lib/meroku/options.rb, line 6
def initialize
  @options = {}
end

Public Instance Methods

parse(command_line_args) click to toggle source
# File lib/meroku/options.rb, line 10
def parse(command_line_args)
  define_options(command_line_args).parse!(command_line_args)
  @options
end

Private Instance Methods

add_app_options(opts) click to toggle source
# File lib/meroku/options.rb, line 39
def add_app_options(opts)
  option(opts, '--create NAME') do |name|
    @options[:create] = true
    @options[:name] = name
  end
  option(opts, '--list-apps') { @options[:list_apps] = true }
  option(opts, '--delete-app NAME') do |name|
    @options[:delete_app] = true
    @options[:name] = name
  end
end
add_key_options(opts) click to toggle source
# File lib/meroku/options.rb, line 30
def add_key_options(opts)
  option(opts, '--keys-add') { @options[:keys_add] = true }
  option(opts, '--keys')     { @options[:keys] = true }
  option(opts, '--keys-remove ID') do |key_id|
    @options[:keys_remove] = true
    @options[:key_id] = key_id
  end
end
add_maintainer_options(opts) click to toggle source
# File lib/meroku/options.rb, line 91
def add_maintainer_options(opts)
  option(opts, '--backup MEROKU_SECRET') do |meroku_secret|
    @options[:backup] = true
    @options[:meroku_secret] = meroku_secret
  end
end
add_maintainer_spawn_options(opts) click to toggle source
# File lib/meroku/options.rb, line 80
def add_maintainer_spawn_options(opts)
  option(opts, '--spawn MEROKU_SECRET') do |meroku_secret|
    @options[:spawn] = true
    @options[:meroku_secret] = meroku_secret
  end
  option(opts, '--despawn MEROKU_SECRET') do |meroku_secret|
    @options[:despawn] = true
    @options[:meroku_secret] = meroku_secret
  end
end
add_user_login_options(opts) click to toggle source
# File lib/meroku/options.rb, line 69
def add_user_login_options(opts)
  option(opts, '--login EMAIL,PASSWORD', Array) do |list|
    @options[:login] = true
    @options[:email] = list[0]
    @options[:password] = list[1]
  end
  option(opts, '--logout') do
    @options[:logout] = true
  end
end
add_user_options(opts) click to toggle source
# File lib/meroku/options.rb, line 51
def add_user_options(opts)
  add_user_registration_options(opts)
  add_user_login_options(opts)
end
add_user_registration_options(opts) click to toggle source
# File lib/meroku/options.rb, line 56
def add_user_registration_options(opts)
  option(opts, '--signup EMAIL,PASSWORD', Array) do |list|
    @options[:signup] = true
    @options[:email] = list[0]
    @options[:password] = list[1]
  end
  option(opts, '--unregister EMAIL,PASSWORD', Array) do |list|
    @options[:unregister] = true
    @options[:email] = list[0]
    @options[:password] = list[1]
  end
end
define_options(_args) click to toggle source
# File lib/meroku/options.rb, line 17
def define_options(_args)
  OptionParser.new do |opts|
    opts.banner = 'Usage: meroku [options]'
    opts.on('--help', 'Prints this help') { puts opts }
    add_user_options(opts)
    add_key_options(opts)
    add_app_options(opts)
    opts.separator ''
    add_maintainer_spawn_options(opts)
    add_maintainer_options(opts)
  end
end
long_opt_symbol(args) click to toggle source

Finds the option in `args` starting with – and converts it to a symbol, e.g. […, '–auto-correct', …] to :auto_correct.

# File lib/meroku/options.rb, line 111
def long_opt_symbol(args)
  long_opt = args.find { |arg| arg.start_with?('--') }
  long_opt[2..-1].sub(/ .*/, '').tr('-', '_').gsub(/[\[\]]/, '').to_sym
end
option(opts, *args) { |arg| ... } click to toggle source

Sets a value in the @options hash, based on the given long option and its value, in addition to calling the block if a block is given.

# File lib/meroku/options.rb, line 100
def option(opts, *args)
  long_opt_symbol = long_opt_symbol(args)
  args += Array(OptionsHelp::TEXT[long_opt_symbol])
  opts.on(*args) do |arg|
    @options[long_opt_symbol] = arg
    yield arg if block_given?
  end
end