Class: Hiera::Backend::Eyaml::Subcommands::Recrypt

Inherits:
Hiera::Backend::Eyaml::Subcommand show all
Defined in:
lib/hiera/backend/eyaml/subcommands/recrypt.rb

Class Method Summary collapse

Methods inherited from Hiera::Backend::Eyaml::Subcommand

all_options, attach_option, find, hidden?, load_config_file, parse, prettyname

Class Method Details

.descriptionObject


21
22
23
# File 'lib/hiera/backend/eyaml/subcommands/recrypt.rb', line 21

def self.description
  "recrypt an eyaml file"
end

.executeObject


38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/hiera/backend/eyaml/subcommands/recrypt.rb', line 38

def self.execute 

  encrypted_parser = Parser::ParserFactory.encrypted_parser
  tokens = encrypted_parser.parse Eyaml::Options[:input_data]
  decrypted_input = tokens.each_with_index.to_a.map{|(t,index)| t.to_decrypted :index => index}.join

  decrypted_parser = Parser::ParserFactory.decrypted_parser
  edited_tokens = decrypted_parser.parse(decrypted_input)

  encrypted_output = edited_tokens.map{ |t| t.to_encrypted({:change_encryption => @change_encryption}) }.join

  filename = Eyaml::Options[:eyaml]
  File.open("#{filename}", 'w') { |file|
    file.write encrypted_output
  }

  nil
end

.helptextObject


25
26
27
# File 'lib/hiera/backend/eyaml/subcommands/recrypt.rb', line 25

def self.helptext
  "Usage: eyaml recrypt [options] <some-eyaml-file>"
end

.optionsObject


12
13
14
15
16
17
18
19
# File 'lib/hiera/backend/eyaml/subcommands/recrypt.rb', line 12

def self.options
  [
       {:name          => :change_encryption,
        :description   => "Specify the new encryption method that should be used for the file",
        :short         => 'd',
        :default       => "pkcs7"}
   ]
end

.validate(options) ⇒ Object


29
30
31
32
33
34
35
36
# File 'lib/hiera/backend/eyaml/subcommands/recrypt.rb', line 29

def self.validate options
  Optimist::die "You must specify an eyaml file" if ARGV.empty?
  options[:source] = :eyaml
  options[:eyaml] = ARGV.shift
  options[:input_data] = File.read options[:eyaml]
  @change_encryption = options[:change_encryption]
  options
end