class Hiera::Backend::Eyaml::Subcommand

Attributes

global_options[RW]
helptext[RW]
options[RW]

Public Class Methods

all_options() click to toggle source
# File lib/hiera/backend/eyaml/subcommand.rb, line 50
def self.all_options 
  options = @@global_options.dup
  options += self.options if self.options
  options += Plugins.options
  # merge in defaults from configuration files
  config_file = self.load_config_file
  options.map!{ | opt| 
    key_name = "#{opt[:name]}"
    if config_file[:options].has_key? key_name
      opt[:default] = config_file[:options][key_name]
      opt
    else
      opt
    end
  }
  { :options => options, :sources => config_file[:sources] || [] }
end
attach_option(opt) click to toggle source
# File lib/hiera/backend/eyaml/subcommand.rb, line 68
def self.attach_option opt
  self.suboptions += opt
end
description() click to toggle source
# File lib/hiera/backend/eyaml/subcommand.rb, line 142
def self.description
  "no description"
end
execute() click to toggle source
# File lib/hiera/backend/eyaml/subcommand.rb, line 150
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/hiera/backend/eyaml/subcommand.rb, line 72
def self.find commandname = "unknown_command"
  begin
    require "hiera/backend/eyaml/subcommands/#{commandname.downcase}"
  rescue Exception => e
    require "hiera/backend/eyaml/subcommands/unknown_command"
    return Hiera::Backend::Eyaml::Subcommands::UnknownCommand
  end          
  command_module = Module.const_get('Hiera').const_get('Backend').const_get('Eyaml').const_get('Subcommands')
  command_class = Utils.find_closest_class :parent_class => command_module, :class_name => commandname
  command_class || Hiera::Backend::Eyaml::Subcommands::UnknownCommand
end
hidden?() click to toggle source
# File lib/hiera/backend/eyaml/subcommand.rb, line 158
def self.hidden?
  false
end
load_config_file() click to toggle source
# File lib/hiera/backend/eyaml/subcommand.rb, line 36
def self.load_config_file
  config = { :options => {}, :sources => [] }
  [ "/etc/eyaml/config.yaml", "#{ENV['HOME']}/.eyaml/config.yaml", "#{ENV['EYAML_CONFIG']}" ].each do |config_file|
    begin
      yaml_contents = YAML.load_file(config_file)
      config[:options].merge! yaml_contents
      config[:sources].push(config_file)
    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/hiera/backend/eyaml/subcommand.rb, line 84
def self.parse

  me = self
  all = self.all_options

  options = Optimist::options do

    version "Hiera-eyaml version " + Hiera::Backend::Eyaml::VERSION.to_s
    banner ["eyaml #{me.prettyname}: #{me.description}", me.helptext, "Options:"].compact.join("\n\n")

    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 Eyaml.subcommands

  end

  if options[:verbose]
    Hiera::Backend::Eyaml.verbosity_level += 1
  end

  if options[:trace]
    Hiera::Backend::Eyaml.verbosity_level += 2
  end

  if options[:quiet]
    Hiera::Backend::Eyaml.verbosity_level = 0
  end

  if options[:encrypt_method]
    Hiera::Backend::Eyaml.default_encryption_scheme = options[:encrypt_method]
  end

  if all[:sources]
    all[:sources].each do |source|
      LoggingHelper::debug "Loaded config from #{source}"
    end
  end

  options

end
prettyname() click to toggle source
# File lib/hiera/backend/eyaml/subcommand.rb, line 154
def self.prettyname
  Utils.snakecase self.to_s.split('::').last
end
validate(args) click to toggle source
# File lib/hiera/backend/eyaml/subcommand.rb, line 138
def self.validate args
  args
end