class Solusvm::BaseCli

Public Class Methods

banner(task, namespace = true, subcommand = false) click to toggle source

Overrides the default banner implementation to output the whole command

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