Class: Detroit::Toolchain::CLI

Inherits:
Object
  • Object
show all
Defined in:
lib/detroit/toolchain/cli.rb

Overview

The CLI class.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeCLI

Run the command line interface.



37
38
39
40
41
42
43
44
45
46
47
48
49
50
# 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

Class Method Details

.execute(argv = ARGV) ⇒ Object

argv - Command line arguments.



32
33
34
# File 'lib/detroit/toolchain/cli.rb', line 32

def self.execute(argv=ARGV)
  new.execute(*argv)
end

Instance Method Details

#application(options = {}) ⇒ Object

Returns Runner instance given options.



85
86
87
# File 'lib/detroit/toolchain/cli.rb', line 85

def application(options={})
  Runner.new(options)
end

#assemblyObject



115
116
117
# File 'lib/detroit/toolchain/cli.rb', line 115

def assembly
  @options[:assembly]
end

#assembly=(name) ⇒ Object



120
121
122
# File 'lib/detroit/toolchain/cli.rb', line 120

def assembly=(name)
  @options[:assembly] = name.to_sym
end

#execute(*argv) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# 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

#forceObject



125
126
127
# File 'lib/detroit/toolchain/cli.rb', line 125

def force
  @options[:force]
end

#force=(boolean) ⇒ Object



130
131
132
# File 'lib/detroit/toolchain/cli.rb', line 130

def force=(boolean)
  @options[:force] = !!boolean
end

#multitaskObject



105
106
107
# File 'lib/detroit/toolchain/cli.rb', line 105

def multitask
  @options[:multitask]
end

#multitask=(boolean) ⇒ Object



110
111
112
# File 'lib/detroit/toolchain/cli.rb', line 110

def multitask=(boolean)
  @options[:multitask] = !!boolean
end

#option_assemblyvoid

This method returns an undefined value.



214
215
216
217
218
# 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_configObject



309
310
311
312
313
314
# 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_debugvoid

This method returns an undefined value.



283
284
285
286
287
# 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_forcevoid

This method returns an undefined value.



267
268
269
270
271
# File 'lib/detroit/toolchain/cli.rb', line 267

def option_force
  usage.on('-F', '--force', "Force operations.") do
    self.force = true
  end
end

#option_helpvoid

This method returns an undefined value.



297
298
299
300
301
302
303
304
305
306
# 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_loadpathvoid

This method returns an undefined value.



274
275
276
277
278
279
280
# 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_multitaskvoid

This method returns an undefined value.



207
208
209
210
211
# 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_parserObject

Create command line option parser.



175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
# 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_quietvoid

This method returns an undefined value.



260
261
262
263
264
# File 'lib/detroit/toolchain/cli.rb', line 260

def option_quiet
  usage.on('-q', '--quiet', "Run silently.") do
    self.quiet = true
  end
end

#option_skipvoid

This method returns an undefined value.



228
229
230
231
232
# 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_toolchainvoid

This method returns an undefined value.



221
222
223
224
225
# 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_tracevoid

This method returns an undefined value.



243
244
245
246
247
248
# 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_trialvoid

This method returns an undefined value.



235
236
237
238
239
240
# 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_verbosevoid

TODO:

Do we really need verbose?

This method returns an undefined value.



253
254
255
256
257
# File 'lib/detroit/toolchain/cli.rb', line 253

def option_verbose
  usage.on('--verbose', "Provide extra output.") do
    self.verbose = true
  end
end

#option_warnvoid

This method returns an undefined value.



290
291
292
293
294
# 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

#optionsObject

Command line options.



90
91
92
# File 'lib/detroit/toolchain/cli.rb', line 90

def options
  @options
end

#quietObject



155
156
157
# File 'lib/detroit/toolchain/cli.rb', line 155

def quiet
  @options[:quiet]
end

#quiet=(boolean) ⇒ Object



160
161
162
# File 'lib/detroit/toolchain/cli.rb', line 160

def quiet=(boolean)
  @options[:quiet] = !!boolean
end

#skipObject



100
101
102
# File 'lib/detroit/toolchain/cli.rb', line 100

def skip
  @options[:skip]
end

#toolchainsObject



95
96
97
# File 'lib/detroit/toolchain/cli.rb', line 95

def toolchains
  @options[:toolchains]
end

#traceObject



145
146
147
# File 'lib/detroit/toolchain/cli.rb', line 145

def trace
  @options[:trace]
end

#trace=(boolean) ⇒ Object



150
151
152
# File 'lib/detroit/toolchain/cli.rb', line 150

def trace=(boolean)
  @options[:trace] = !!boolean
end

#trialObject



135
136
137
# File 'lib/detroit/toolchain/cli.rb', line 135

def trial
  @options[:trial]
end

#trial=(boolean) ⇒ Object



140
141
142
# File 'lib/detroit/toolchain/cli.rb', line 140

def trial=(boolean)
  @options[:trial] = !!boolean
end

#usageOptionParser

Cached instance of OptionParser.

Returns:

  • (OptionParser)


197
198
199
# File 'lib/detroit/toolchain/cli.rb', line 197

def usage
  @usage ||= OptionParser.new
end

#usage_bannerString

Returns:



202
203
204
# File 'lib/detroit/toolchain/cli.rb', line 202

def usage_banner
  usage.banner = "Usage: detroit [<track>:]<stop> [options]"
end

#verboseObject



165
166
167
# File 'lib/detroit/toolchain/cli.rb', line 165

def verbose
  @options[:quiet]
end

#verbose=(boolean) ⇒ Object



170
171
172
# File 'lib/detroit/toolchain/cli.rb', line 170

def verbose=(boolean)
  @options[:verbose] = !!boolean
end