Module: EverydayCliUtils::OptionUtil

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

Instance Method Summary collapse

Instance Method Details

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



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

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


248
249
250
251
# File 'lib/everyday-cli-utils/option.rb', line 248

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

#default_options(opts = {}) ⇒ Object



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

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

#default_settings(settings = {}) ⇒ Object



233
234
235
236
# File 'lib/everyday-cli-utils/option.rb', line 233

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

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



203
204
205
206
207
208
209
210
# File 'lib/everyday-cli-utils/option.rb', line 203

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



212
213
214
215
216
217
218
219
# File 'lib/everyday-cli-utils/option.rb', line 212

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



265
266
267
268
# File 'lib/everyday-cli-utils/option.rb', line 265

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

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



225
226
227
228
229
230
231
# File 'lib/everyday-cli-utils/option.rb', line 225

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



275
276
277
# File 'lib/everyday-cli-utils/option.rb', line 275

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

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



193
194
195
196
# File 'lib/everyday-cli-utils/option.rb', line 193

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

#option_listObject



261
262
263
# File 'lib/everyday-cli-utils/option.rb', line 261

def option_list
  @options
end

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



198
199
200
201
# File 'lib/everyday-cli-utils/option.rb', line 198

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

#optionsObject



257
258
259
# File 'lib/everyday-cli-utils/option.rb', line 257

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

#optsObject



253
254
255
# File 'lib/everyday-cli-utils/option.rb', line 253

def opts
  @options.opts
end

#parse!(argv = ARGV) ⇒ Object



279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
# File 'lib/everyday-cli-utils/option.rb', line 279

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 @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(layers, names, settings = {}) ⇒ Object



221
222
223
# File 'lib/everyday-cli-utils/option.rb', line 221

def show_defaults_option(layers, names, settings = {})

end

#to_sObject



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

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