class Ridoku::ClassProperties

Attributes

default[RW]
input[RW]
required[RW]
warnings[RW]

Public Class Methods

new() click to toggle source
# File lib/ridoku/defaults.rb, line 19
def initialize
  fail StandardError.new('IAM/OpsWorks permission are not yet configured.') unless
    Base.roles_configured?
end

Public Instance Methods

defaults(type, _input, wizard = false) click to toggle source
# File lib/ridoku/defaults.rb, line 28
def defaults(type, _input, wizard = false)
  self.input = _input
  
  fail ArgumentError.new("No default parameters for type: #{type}") unless
    default.key?(type)

  merge_input(type, wizard)
end
defaults_with_wizard(type, _input) click to toggle source
# File lib/ridoku/defaults.rb, line 24
def defaults_with_wizard(type, _input)
  defaults(type, _input, true)
end

Protected Instance Methods

merge_input(type, with_wizard = false) click to toggle source
# File lib/ridoku/defaults.rb, line 39
def merge_input(type, with_wizard = false)
  fail ArgumentError.new(":default and :required lack type: #{type}") unless
    default.key?(type) && required.key?(type)

  fail ArgumentError.new('Inputs :default, :required, and :user must be hashes!') unless
    default[type].is_a?(Hash) && input.is_a?(Hash) && required[type].is_a?(Hash)

  type_default = default[type].deep_merge(input)

  errors = []
  collect = {}

  required[type].each do |k|
    unless input.key?(k)
      errors << k
      collect[k] = required[k]
    end
  end

  if with_wizard
    ConfigWizard.fetch_input(type_default, required[type], warnings)
  else
    fail ArgumentError.new("User input required: #{errors}") if
      errors.length
  end

  type_default
end