class Detroit::Toolchain::CLI

The CLI class.

Public Class Methods

execute(argv=ARGV) click to toggle source

argv - Command line arguments.

# File lib/detroit/toolchain/cli.rb, line 32
def self.execute(argv=ARGV)
  new.execute(*argv)
end
new() click to toggle source

Run the command line interface.

# File lib/detroit/toolchain/cli.rb, line 37
def initialize
  @options = {
    :toolchains => [], 
    :assembly   => nil,
    :trace      => nil, 
    :trial      => nil,
    :debug      => nil,
    :quiet      => nil,
    :verbose    => nil,
    :force      => nil,
    :multitask  => nil,
    :skip       => []
  }
end

Public Instance Methods

application(options={}) click to toggle source

Returns Runner instance given options.

# File lib/detroit/toolchain/cli.rb, line 85
def application(options={})
  Runner.new(options)
end
assembly() click to toggle source
# File lib/detroit/toolchain/cli.rb, line 115
def assembly
  @options[:assembly]
end
assembly=(name) click to toggle source
# File lib/detroit/toolchain/cli.rb, line 120
def assembly=(name)
  @options[:assembly] = name.to_sym
end
execute(*argv) click to toggle source
# File lib/detroit/toolchain/cli.rb, line 53
def execute(*argv)
  #if /\.assembly$/ =~ argv[0]
  #  job = argv[1]
  #  begin
  #    application(cli_options).runscript(argv[0], job)
  #  rescue => error
  #    $stderr.puts error.message
  #    exit -1
  #  end
  #else

  option_parser.parse!(argv)

  if argv.empty?
    # TODO: What about a defualt destination, e.g. test?
    $stderr.puts "No assembly destination given."
    exit -1
  end

  if $DEBUG
    application(options).start(*argv)
  else
    begin
      application(options).start(*argv)
    rescue => error
      $stderr.puts error.message
      exit -1
    end
  end
end
force() click to toggle source
# File lib/detroit/toolchain/cli.rb, line 125
def force
  @options[:force]
end
force=(boolean) click to toggle source
# File lib/detroit/toolchain/cli.rb, line 130
def force=(boolean)
  @options[:force] = !!boolean
end
multitask() click to toggle source
# File lib/detroit/toolchain/cli.rb, line 105
def multitask
  @options[:multitask]
end
multitask=(boolean) click to toggle source
# File lib/detroit/toolchain/cli.rb, line 110
def multitask=(boolean)
  @options[:multitask] = !!boolean
end
option_assembly() click to toggle source

@return [void]

# File lib/detroit/toolchain/cli.rb, line 214
def option_assembly
  usage.on('-a', '--assembly=NAME', "Select assembly. Default is `standard'.") do |a|
    self.assembly = a
  end
end
option_config() click to toggle source
# File lib/detroit/toolchain/cli.rb, line 309
def option_config
  usage.on_tail('-c', '--config TOOL', "Produce a configuration template.") do |tool|
    puts application.config_template(tool).to_yaml
    exit
  end
end
option_debug() click to toggle source

@return [void]

# File lib/detroit/toolchain/cli.rb, line 283
def option_debug
  usage.on('--debug', "Run with $DEBUG set to true.") do
    $DEBUG = true
  end
end
option_force() click to toggle source

@return [void]

# File lib/detroit/toolchain/cli.rb, line 267
def option_force
  usage.on('-F', '--force', "Force operations.") do
    self.force = true
  end
end
option_help() click to toggle source

@return [void]

# File lib/detroit/toolchain/cli.rb, line 297
def option_help
  usage.on_tail('--help [TOOL]', "Display this help message.") do |tool|
    if tool
      application.display_help(tool)
    else
      puts usage
    end
    exit
  end
end
option_loadpath() click to toggle source

@return [void]

# File lib/detroit/toolchain/cli.rb, line 274
def option_loadpath
  usage.on('-I=PATH', "Add directory to $LOAD_PATH") do |dirs|
    dirs.to_list.each do |dir|
      $LOAD_PATH.unshift(dir)
    end
  end
end
option_multitask() click to toggle source

@return [void]

# File lib/detroit/toolchain/cli.rb, line 207
def option_multitask
  usage.on('-m', '--multitask', "Run work elements in parallel.") do
    self.multitask = true
  end
end
option_parser() click to toggle source

Create command line option parser.

# File lib/detroit/toolchain/cli.rb, line 175
def option_parser
  usage_banner
  option_multitask
  option_assembly
  option_toolchain
  option_skip
  option_trial
  option_trace
  option_loadpath
  option_force
  option_verbose
  option_quiet
  option_config
  option_debug
  option_warn
  option_help
  usage
end
option_quiet() click to toggle source

@return [void]

# File lib/detroit/toolchain/cli.rb, line 260
def option_quiet
  usage.on('-q', '--quiet', "Run silently.") do
    self.quiet = true
  end
end
option_skip() click to toggle source

@return [void]

# File lib/detroit/toolchain/cli.rb, line 228
def option_skip
  usage.on('-S', '--skip [NAME]', 'Skip a tool instance.') do |skip|
    self.skip << skip
  end
end
option_toolchain() click to toggle source

@return [void]

# File lib/detroit/toolchain/cli.rb, line 221
def option_toolchain
  usage.on('-t', '--toolchain [FILE]', 'Use specific toolchain file(s).') do |file|
    self.toolchains << file
  end
end
option_trace() click to toggle source

@return [void]

# File lib/detroit/toolchain/cli.rb, line 243
def option_trace
  usage.on('--trace', "Run in TRACE mode.") do
    #$TRACE = true
    self.trace = true
  end
end
option_trial() click to toggle source

@return [void]

# File lib/detroit/toolchain/cli.rb, line 235
def option_trial
  usage.on('--trial', "Run in TRIAL mode (no disk writes).") do
    #$TRIAL = true
    self.trial =  true
  end
end
option_verbose() click to toggle source

@todo Do we really need verbose?

@return [void]

# File lib/detroit/toolchain/cli.rb, line 253
def option_verbose
  usage.on('--verbose', "Provide extra output.") do
    self.verbose = true
  end
end
option_warn() click to toggle source

@return [void]

# File lib/detroit/toolchain/cli.rb, line 290
def option_warn
  usage.on('--warn', "Run with $VERBOSE set to true.") do
    $VERBOSE = true  # wish this were called $WARN
  end
end
options() click to toggle source

Command line options.

# File lib/detroit/toolchain/cli.rb, line 90
def options
  @options
end
quiet() click to toggle source
# File lib/detroit/toolchain/cli.rb, line 155
def quiet
  @options[:quiet]
end
quiet=(boolean) click to toggle source
# File lib/detroit/toolchain/cli.rb, line 160
def quiet=(boolean)
  @options[:quiet] = !!boolean
end
skip() click to toggle source
# File lib/detroit/toolchain/cli.rb, line 100
def skip
  @options[:skip]
end
toolchains() click to toggle source
# File lib/detroit/toolchain/cli.rb, line 95
def toolchains
  @options[:toolchains]
end
trace() click to toggle source
# File lib/detroit/toolchain/cli.rb, line 145
def trace
  @options[:trace]
end
trace=(boolean) click to toggle source
# File lib/detroit/toolchain/cli.rb, line 150
def trace=(boolean)
  @options[:trace] = !!boolean
end
trial() click to toggle source
# File lib/detroit/toolchain/cli.rb, line 135
def trial
  @options[:trial]
end
trial=(boolean) click to toggle source
# File lib/detroit/toolchain/cli.rb, line 140
def trial=(boolean)
  @options[:trial] = !!boolean
end
usage() click to toggle source

Cached instance of OptionParser.

@return [OptionParser]

# File lib/detroit/toolchain/cli.rb, line 197
def usage
  @usage ||= OptionParser.new
end
usage_banner() click to toggle source

@return [String]

# File lib/detroit/toolchain/cli.rb, line 202
def usage_banner
  usage.banner = "Usage: detroit [<track>:]<stop> [options]"
end
verbose() click to toggle source
# File lib/detroit/toolchain/cli.rb, line 165
def verbose
  @options[:quiet]
end
verbose=(boolean) click to toggle source
# File lib/detroit/toolchain/cli.rb, line 170
def verbose=(boolean)
  @options[:verbose] = !!boolean
end