class Enviera::Subcommand
Attributes
global_options[RW]
helptext[RW]
options[RW]
Public Class Methods
all_options()
click to toggle source
# File lib/enviera/subcommand.rb, line 38 def self.all_options options = @@global_options.dup options += self.options if self.options # merge in defaults from configuration files config_file = self.load_config_file options.map!{ | opt| key_name = "#{opt[:name]}" if config_file.has_key? key_name opt[:default] = config_file[key_name] opt else opt end } options end
attach_option(opt)
click to toggle source
# File lib/enviera/subcommand.rb, line 55 def self.attach_option opt self.suboptions += opt end
description()
click to toggle source
# File lib/enviera/subcommand.rb, line 114 def self.description "no description" end
execute()
click to toggle source
# File lib/enviera/subcommand.rb, line 122 def self.execute raise StandardError, "This command is not implemented yet (#{self.to_s.split('::').last})" end
find(commandname = "unknown_command")
click to toggle source
# File lib/enviera/subcommand.rb, line 59 def self.find commandname = "unknown_command" begin require "enviera/subcommands/#{commandname.downcase}" rescue Exception => e require "enviera/subcommands/unknown_command" return Enviera::Subcommands::UnknownCommand end command_module = Module.const_get('Enviera').const_get('Subcommands') command_class = Utils.find_closest_class :parent_class => command_module, :class_name => commandname command_class || Enviera::Subcommands::UnknownCommand end
load_config_file()
click to toggle source
# File lib/enviera/subcommand.rb, line 24 def self.load_config_file config = {} [ "/etc/enviera/config.yaml", "#{ENV['HOME']}/.enviera/config.yaml", "#{ENV['ENVIERA_CONFIG']}" ].each do |config_file| begin yaml_contents = YAML.load_file(config_file) Utils::info "Loaded config from #{config_file}" config.merge! yaml_contents rescue raise StandardError, "Could not open config file \"#{config_file}\" for reading" end if config_file and File.file? config_file end config end
parse()
click to toggle source
# File lib/enviera/subcommand.rb, line 71 def self.parse me = self options = Trollop::options do version "Enviera version " + Enviera::VERSION.to_s banner ["enviera #{me.prettyname}: #{me.description}", me.helptext, "Options:"].compact.join("\n\n") me.all_options.each do |available_option| skeleton = {:description => "", :short => :none} skeleton.merge! available_option opt skeleton[:name], skeleton[:desc] || skeleton[:description], #legacy plugins :short => skeleton[:short], :default => skeleton[:default], :type => skeleton[:type] end stop_on Enviera.subcommands end if options[:verbose] Enviera.verbosity_level += 1 end if options[:quiet] Enviera.verbosity_level = 0 end options end
prettyname()
click to toggle source
# File lib/enviera/subcommand.rb, line 126 def self.prettyname Utils.snakecase self.to_s.split('::').last end
validate(args)
click to toggle source
# File lib/enviera/subcommand.rb, line 110 def self.validate args args end