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 64
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 = load_config_file
  options.map!  do |opt|
    key_name = "#{opt[:name]}"
    if config_file[:options].has_key? key_name
      opt[:default] = config_file[:options][key_name]
      opt
    else
      opt
    end
  end
  { options: options, sources: config_file[:sources] || [] }
end
attach_option(opt) click to toggle source
# File lib/hiera/backend/eyaml/subcommand.rb, line 82
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 (#{to_s.split('::').last})"
end
find(commandname = 'unknown_command') click to toggle source
# File lib/hiera/backend/eyaml/subcommand.rb, line 86
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 34
def self.load_config_file
  config = { options: {}, sources: [] }

  config_paths = []
  # Global
  config_paths += ['/etc/eyaml/config.yaml']
  # Home directory
  env_home = ENV.fetch('HOME', nil)
  config_paths += ["#{env_home}/.eyaml/config.yaml"] if env_home
  # Relative to current directory
  config_paths += ['.eyaml/config.yaml']
  # Explicit ENV variable.
  env_eyaml_config = ENV.fetch('EYAML_CONFIG', nil)
  config_paths += [env_eyaml_config] if env_eyaml_config

  # Load each path and stack configs.
  config_paths.each do |config_file|
    next unless config_file and File.file? config_file

    begin
      yaml_contents = YAML.load_file(config_file)
      config[:options].merge! yaml_contents
      config[:sources].push(config_file)
    rescue StandardError
      raise StandardError, "Could not open config file \"#{config_file}\" for reading"
    end
  end
  config
end
parse() click to toggle source
# File lib/hiera/backend/eyaml/subcommand.rb, line 98
def self.parse
  me = self
  all = 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

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

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

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

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

  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 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