Module: EverydayCliUtils::OptionUtil

Defined in:
lib/everyday-cli-utils/option.rb

Instance Method Summary collapse

Instance Method Details

#apply_options(layer, opts = {}) ⇒ Object



294
295
296
297
# File 'lib/everyday-cli-utils/option.rb', line 294

def apply_options(layer, opts = {})
  @options ||= OptionList.new
  opts.each { |opt| @options.update(opt[0], opt[1], layer) }
end


299
300
301
302
# File 'lib/everyday-cli-utils/option.rb', line 299

def banner(banner)
  @options        ||= OptionList.new
  @options.banner = banner
end

#default_options(opts = {}) ⇒ Object



289
290
291
292
# File 'lib/everyday-cli-utils/option.rb', line 289

def default_options(opts = {})
  @options ||= OptionList.new
  opts.each { |opt| @options.set(opt[0], opt[1]) }
end

#default_settings(settings = {}) ⇒ Object



284
285
286
287
# File 'lib/everyday-cli-utils/option.rb', line 284

def default_settings(settings = {})
  @options                  ||= OptionList.new
  @options.default_settings = settings
end

#defaults_option(file_path, names, settings = {}) ⇒ Object



250
251
252
253
254
255
256
257
# File 'lib/everyday-cli-utils/option.rb', line 250

def defaults_option(file_path, names, settings = {})
  @options       ||= OptionList.new
  @set_defaults  = false
  @defaults_file = File.expand_path(file_path)
  @exit_on_save  = !settings.has_key?(:exit_on_save) || settings[:exit_on_save]
  names << settings[:desc] if settings.has_key?(:desc)
  @options.opts.on(*names) { @set_defaults = true }
end

#global_defaults_option(file_path, names, settings = {}) ⇒ Object



259
260
261
262
263
264
265
266
# File 'lib/everyday-cli-utils/option.rb', line 259

def global_defaults_option(file_path, names, settings = {})
  @options              ||= OptionList.new
  @set_global_defaults  = false
  @global_defaults_file = File.expand_path(file_path)
  @exit_on_global_save  = !settings.has_key?(:exit_on_save) || settings[:exit_on_save]
  names << settings[:desc] if settings.has_key?(:desc)
  @options.opts.on(*names) { @set_global_defaults = true }
end

#helpObject



316
317
318
319
# File 'lib/everyday-cli-utils/option.rb', line 316

def help
  @options ||= OptionList.new
  @options.help
end

#help_option(names, settings = {}) ⇒ Object



276
277
278
279
280
281
282
# File 'lib/everyday-cli-utils/option.rb', line 276

def help_option(names, settings = {})
  @options       ||= OptionList.new
  @display_help  = false
  @exit_on_print = !settings.has_key?(:exit_on_print) || settings[:exit_on_print]
  names << settings[:desc] if settings.has_key?(:desc)
  @options.opts.on(*names) { @display_help = true }
end

#help_str=(str) ⇒ Object



326
327
328
# File 'lib/everyday-cli-utils/option.rb', line 326

def help_str=(str)
  @options.help_str = str
end

#option(opt_name, names, settings = {}, &block) ⇒ Object



240
241
242
243
# File 'lib/everyday-cli-utils/option.rb', line 240

def option(opt_name, names, settings = {}, &block)
  @options ||= OptionList.new
  @options.register(:option, opt_name, names, settings, &block)
end

#option_listObject



312
313
314
# File 'lib/everyday-cli-utils/option.rb', line 312

def option_list
  @options
end

#option_with_param(opt_name, names, settings = {}, &block) ⇒ Object



245
246
247
248
# File 'lib/everyday-cli-utils/option.rb', line 245

def option_with_param(opt_name, names, settings = {}, &block)
  @options ||= OptionList.new
  @options.register(:option_with_param, opt_name, names, settings, &block)
end

#optionsObject



308
309
310
# File 'lib/everyday-cli-utils/option.rb', line 308

def options
  @options.composite(:global, :local, :arg)
end

#optsObject



304
305
306
# File 'lib/everyday-cli-utils/option.rb', line 304

def opts
  @options.opts
end

#parse!(argv = ARGV) ⇒ Object



330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
# File 'lib/everyday-cli-utils/option.rb', line 330

def parse!(argv = ARGV)
  @options ||= OptionList.new
  apply_options :global, YAML::load_file(@global_defaults_file) unless @global_defaults_file.nil? || !File.exist?(@global_defaults_file)
  apply_options :local, YAML::load_file(@defaults_file) unless @defaults_file.nil? || !File.exist?(@defaults_file)
  @options.parse!(argv)
  if @display_help
    puts help
    exit 0 if @exit_on_print
  end
  if @show_defaults
    puts @options.show_defaults
    exit 0 if @exit_on_show_defaults
  end
  if @set_global_defaults
    IO.write(@global_defaults_file, @options.composite(:global, :arg).to_yaml)
    if @exit_on_global_save
      puts 'Global defaults set'
      exit 0
    end
  elsif @set_defaults
    IO.write(@defaults_file, @options.composite(:local, :arg).to_yaml)
    if @exit_on_save
      puts 'Defaults set'
      exit 0
    end
  end
end

#show_defaults_option(names, settings = {}) ⇒ Object



268
269
270
271
272
273
274
# File 'lib/everyday-cli-utils/option.rb', line 268

def show_defaults_option(names, settings = {})
  @options               ||= OptionList.new
  @show_defaults         = false
  @exit_on_show_defaults = !settings.has_key?(:exit_on_show) || settings[:exit_on_show]
  names << settings[:desc] if settings.has_key?(:desc)
  @options.opts.on(*names) { @show_defaults = true }
end

#to_sObject



321
322
323
324
# File 'lib/everyday-cli-utils/option.rb', line 321

def to_s
  @options ||= OptionList.new
  @options.to_s
end