Class: Leml::Core

Inherits:
Object
  • Object
show all
Defined in:
lib/leml/core.rb

Constant Summary collapse

KEY_FILE =
Rails.root.join('config', 'leml.key')
SECRETS =
Rails.root.join('config', 'leml.yml')

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeCore

Returns a new instance of Core.



64
65
66
67
68
69
# File 'lib/leml/core.rb', line 64

def initialize
  @key = File.exist?(KEY_FILE) ? File.read(KEY_FILE).chop : ENV['LEML_KEY']
  return if @key.blank?
  @encryptor = ActiveSupport::MessageEncryptor.new(@key, cipher: 'aes-256-cbc')
  @secrets = YAML.load_file(SECRETS)
end

Class Method Details

.setupObject



9
10
11
12
13
# File 'lib/leml/core.rb', line 9

def setup
  key_initialize
  yaml_initialize
  complete_message
end

Instance Method Details

#editObject



76
77
78
79
80
81
82
83
84
# File 'lib/leml/core.rb', line 76

def edit
  no_editor if ENV['EDITOR'].blank?
  Dir.mktmpdir do |dir|
    tmp_file = create_decrypted_tmp_file(dir)
    system("#{ENV['EDITOR']} #{tmp_file.to_s}")
    reload_secrets_file(tmp_file)
    puts 'OK, your secrets is encrypted.'
  end
end

#merge_secretsObject



71
72
73
74
# File 'lib/leml/core.rb', line 71

def merge_secrets
  return unless @key.present? && File.exists?(SECRETS)
  Rails.application.secrets.merge!(decrypt(@secrets)[Rails.env].deep_symbolize_keys) if @secrets
end

#showObject



86
87
88
89
# File 'lib/leml/core.rb', line 86

def show
  return unless @secrets
  print(decrypt(@secrets).to_yaml)
end