Class: Mantra::Transform

Inherits:
Object
  • Object
show all
Includes:
Helpers::ObjectWithType
Defined in:
lib/mantra/transform.rb,
lib/mantra/transform/merge.rb,
lib/mantra/transform/extract.rb,
lib/mantra/transform/replace.rb,
lib/mantra/transform/inputs/any.rb,
lib/mantra/transform/inputs/file.rb,
lib/mantra/transform/inputs/hash.rb,
lib/mantra/transform/inputs/array.rb,
lib/mantra/transform/inputs/folder.rb,
lib/mantra/transform/inputs/string.rb,
lib/mantra/transform/extract_section.rb,
lib/mantra/transform/templatize_value.rb,
lib/mantra/transform/extract_certificates.rb,
lib/mantra/transform/templatize_ip_address.rb,
lib/mantra/transform/extract_certificates_to_files.rb

Defined Under Namespace

Classes: Extract, ExtractCertificates, ExtractCertificatesToFiles, ExtractSection, Input, Merge, Replace, TemplatizeIpAddress, TemplatizeValue, ValidationError

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Helpers::ObjectWithType

included

Class Method Details

.description(description) ⇒ Object



46
47
48
# File 'lib/mantra/transform.rb', line 46

def self.description(description)
  @description = description
end

.input(name, options = {type: :string}) ⇒ Object



36
37
38
39
40
41
42
43
44
# File 'lib/mantra/transform.rb', line 36

def self.input(name, options={type: :string})
  self.inputs[name] = Input.create(options)
  define_method name do
    self.options[name]
  end
  define_method "#{name}_defined?" do
    !self.options[name].nil?
  end
end

.inputsObject



32
33
34
# File 'lib/mantra/transform.rb', line 32

def self.inputs
  @inputs ||= {}
end

Instance Method Details

#ensure_yml_file_exist(path) ⇒ Object



68
69
70
71
72
73
74
# File 'lib/mantra/transform.rb', line 68

def ensure_yml_file_exist(path)
  return if File.exist?(path)
  pathname = Pathname.new(path)
  directory = pathname.dirname
  FileUtils.mkdir_p(directory)
  File.open(path, "w+") { |file| file.write({}.to_yaml) }
end

#merge_toolObject



82
83
84
85
86
# File 'lib/mantra/transform.rb', line 82

def merge_tool
  return @merge_tool unless @merge_tool.nil?
  merge_tool_type = self.options[:merge_tool] || :spiff
  @merge_tool = MergeTool.create(type: merge_tool_type)
end

#performObject



64
65
66
# File 'lib/mantra/transform.rb', line 64

def perform
  raise "not implemented"
end

#previous_transformObject



96
97
98
# File 'lib/mantra/transform.rb', line 96

def previous_transform
  self.options[:previous_transform]
end

#raise_error_if_no_source_manifestObject



76
77
78
79
80
# File 'lib/mantra/transform.rb', line 76

def raise_error_if_no_source_manifest
  if self.source.nil? || !File.exist?(self.source)
    raise Manifest::FileNotFoundError.new("Source manifest does not exist: #{self.source.inspect}")
  end
end

#runObject



50
51
52
53
# File 'lib/mantra/transform.rb', line 50

def run
  validate_inputs
  self.perform
end

#source_manifestObject



88
89
90
# File 'lib/mantra/transform.rb', line 88

def source_manifest
  @source_manifest ||= Manifest.new(self.source)
end

#target_manifestObject



92
93
94
# File 'lib/mantra/transform.rb', line 92

def target_manifest
  @target_manifest ||= Manifest.new(self.target)
end

#validate_inputsObject



55
56
57
58
59
60
61
62
# File 'lib/mantra/transform.rb', line 55

def validate_inputs
  self.class.inputs.each_pair do |name, input|
    input_value = self.options[name]
    input.validate_required(input_value, name) if input.required?
    input_value = self.options[name]
    input.validate(input_value, name)
  end
end