class Solusvm::BaseCli
Public Class Methods
default_option(key)
click to toggle source
Retrieves default options coming from a configuration file, if any.
# File lib/solusvm/cli/base_cli.rb, line 28 def default_option(key) @@yaml ||= begin file = File.join(File.expand_path(ENV['HOME']), '.solusvm.yml') if File.exists?(file) YAML::load(File.open(file)) else {} end end @@yaml[key.to_s] end
namespace(name=nil)
click to toggle source
Convenience method to get the namespace from the class name. It's the same as Thor default except that the “_cli” at the end of the class is removed.
Calls superclass method
# File lib/solusvm/cli/base_cli.rb, line 19 def namespace(name=nil) if name super else @namespace ||= super.sub(/_cli$/, '') end end
Public Instance Methods
api()
click to toggle source
# File lib/solusvm/cli/base_cli.rb, line 48 def api raise NotImplementedError end
output(result="", color=nil, force_new_line=(result.to_s !~ /( |\t)$/))
click to toggle source
prints one result element per line, in case it is a list
# File lib/solusvm/cli/base_cli.rb, line 53 def output(result="", color=nil, force_new_line=(result.to_s !~ /( |\t)$/)) if api.successful? Array(result).each do |entry| say(entry, color, force_new_line) end else say("Request failed: #{api.statusmsg}", color, force_new_line) end end
Protected Instance Methods
api_params()
click to toggle source
# File lib/solusvm/cli/base_cli.rb, line 66 def api_params() { api_id: present_or_exit(:api_login, :id, "api_login required"), api_key: present_or_exit(:api_key, :key, "api_key required"), url: present_or_exit(:api_url, :url, "api_url required") } end
present_or_exit(options_key, default_option_key, message)
click to toggle source
# File lib/solusvm/cli/base_cli.rb, line 74 def present_or_exit(options_key, default_option_key, message) options[options_key] || BaseCli.default_option(default_option_key) || (say(message) && raise(SystemExit)) end