class Bricolage::GlobalOptions

Attributes

environment[R]
global_variables[R]
home[R]
job_file[R]

Public Class Methods

new(app) click to toggle source
# File lib/bricolage/application.rb, line 292
def initialize(app)
  @app = app
  @job_file = nil
  @environment = nil
  @home = nil
  @global_variables = Variables.new
  @dry_run = false
  @explain = false
  @list_global_variables = false
  @list_variables = false
  @list_declarations = false
  @dump_options = false
  init_options
end

Public Instance Methods

define_options(parser) click to toggle source
# File lib/bricolage/application.rb, line 311
    def define_options(parser)
      parser.banner = <<-EndBanner
Synopsis:
  #{@app.program_name} [global_options] JOB_CLASS [job_options]
  #{@app.program_name} [global_options] --job=JOB_FILE -- [job_options]
Global Options:
      EndBanner
      parser.on('-f', '--job=JOB_FILE', 'Give job parameters via job file (YAML).') {|path|
        @job_file = path
      }
      parser.on('-e', '--environment=NAME', "Sets execution environment [default: #{Context::DEFAULT_ENV}]") {|env|
        @environment = env
      }
      parser.on('-C', '--home=PATH', 'Sets application home directory.') {|path|
        @home = Pathname(path)
      }
      parser.on('-n', '--dry-run', 'Shows job script without executing it.') {
        @dry_run = true
      }
      parser.on('-E', '--explain', 'Applies EXPLAIN to the SQL.') {
        @explain = true
      }

      define_common_options

      parser.on('--list-job-class', 'Lists job class name and (internal) class path.') {
        JobClass.list.each do |name|
          puts name
        end
        exit 0
      }
      parser.on('--list-global-variables', 'Lists global variables.') {
        @list_global_variables = true
      }
      parser.on('--list-variables', 'Lists all variables.') {
        @list_variables = true
      }
      parser.on('--list-declarations', 'Lists script variable declarations.') {
        @list_declarations = true
      }
      parser.on('-r', '--require=FEATURE', 'Requires ruby library.') {|feature|
        require feature
      }
      parser.on('-v', '--variable=NAME=VALUE', 'Set global variable (is different from job-level -v !!).') {|name_value|
        name, value = name_value.split('=', 2)
        @global_variables[name] = value
      }
      parser.on('--dump-options', 'Shows option parsing result and quit.') {
        @dump_options = true
      }
      parser.on('--help', 'Shows this message and quit.') {
        puts parser.help
        exit 0
      }
      parser.on('--version', 'Shows program version and quit.') {
        puts "#{APPLICATION_NAME} version #{VERSION}"
        exit 0
      }
    end
dry_run?() click to toggle source
# File lib/bricolage/application.rb, line 392
def dry_run?
  @dry_run
end
dump_options?() click to toggle source
# File lib/bricolage/application.rb, line 400
def dump_options?
  @dump_options
end
explain?() click to toggle source
# File lib/bricolage/application.rb, line 396
def explain?
  @explain
end
file_mode?() click to toggle source
# File lib/bricolage/application.rb, line 388
def file_mode?
  !!@job_file
end
help() click to toggle source
# File lib/bricolage/application.rb, line 307
def help
  @parser.help
end
list_declarations?() click to toggle source
# File lib/bricolage/application.rb, line 414
def list_declarations?
  @list_declarations
end
list_global_variables?() click to toggle source
# File lib/bricolage/application.rb, line 406
def list_global_variables?
  @list_global_variables
end
list_variables?() click to toggle source
# File lib/bricolage/application.rb, line 410
def list_variables?
  @list_variables
end
on(*args, &block) click to toggle source
# File lib/bricolage/application.rb, line 371
def on(*args, &block)
  @parser.on(*args, &block)
end
option_pairs() click to toggle source
# File lib/bricolage/application.rb, line 418
def option_pairs
  common_options.merge({
    'environment' => OptionValue.new(nil, @environment),
    'home' => OptionValue.new(nil, @home)
  })
end
parse!(argv) click to toggle source
# File lib/bricolage/application.rb, line 375
def parse!(argv)
  @parser.order! argv
  @rest_args = argv.dup
  build_common_options!
rescue OptionParser::ParseError => ex
  raise OptionError, ex.message
end