Class: Chef::Knife::HitoriFileDec

Inherits:
Chef::Knife show all
Includes:
HitoriBase, KnifeHitori::CryptUtil
Defined in:
lib/chef/knife/hitori_file_dec.rb

Instance Method Summary collapse

Methods included from KnifeHitori::CryptUtil

#decrypt, #encrypt

Methods included from HitoriBase

#update_environment

Instance Method Details

#runObject



25
26
27
28
29
30
31
32
33
# File 'lib/chef/knife/hitori_file_dec.rb', line 25

def run
  update_environment(config[:environment]) if config[:environment]
  exit 1 unless validate

  secret = Chef::EncryptedDataBagItem.load_secret(secret_file_path)
  data = File.read(config[:in_file])
  File.write(config[:out_file], decrypt(JSON.parse(data), secret))
  ui.info ui.color("Saved in #{config[:out_file]}", :green)
end

#secret_file_pathObject



35
36
37
# File 'lib/chef/knife/hitori_file_dec.rb', line 35

def secret_file_path
  config[:secret_file] || Chef::Config[:encrypted_data_bag_secret]
end

#validateObject



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/chef/knife/hitori_file_dec.rb', line 39

def validate
  unless config[:in_file]
    ui.error '-i IN_FILE must be specified'
    return false
  end

  unless ::File.exists?(config[:in_file])
    ui.error "IN_FILE: #{config[:in_file]} not found"
    return false
  end

  unless config[:out_file]
    ui.error '-o OUT_FILE must be specified'
    return false
  end

  unless ::File.exists?(secret_file_path)
    ui.error 'No secret key file is found.'
    return false
  end

  return true
end