Module: CredStash

Defined in:
lib/cred_stash.rb,
lib/cred_stash/cli.rb,
lib/cred_stash/error.rb,
lib/cred_stash/config.rb,
lib/cred_stash/version.rb

Defined Under Namespace

Modules: Repository Classes: CLI, Cipher, CipherKey, Config, Error, ItemNotFound, Secret

Constant Summary collapse

VERSION =
"2.0.0"

Class Method Summary collapse

Class Method Details

.configObject



7
8
9
# File 'lib/cred_stash/config.rb', line 7

def config
  @config ||= Config.new
end

.configure {|config| ... } ⇒ Object

Yields:



3
4
5
# File 'lib/cred_stash/config.rb', line 3

def configure
  yield config
end

.delete(name, version: nil) ⇒ Object



36
37
38
39
40
# File 'lib/cred_stash.rb', line 36

def delete(name, version: nil)
  repository = Repository.instance
  item = repository.select(name, version: version).first
  repository.delete(item)
end

.get(name, context: {}, raise_if_missing: false, version: nil) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/cred_stash.rb', line 3

def get(name, context: {}, raise_if_missing: false, version: nil)
  secret = Secret.find(name, context: context, version: version)

  if secret.falsified?
    raise "Invalid secret. #{name} has falsified"
  end

  secret.decrypted_value

rescue CredStash::ItemNotFound => e
  raise e if raise_if_missing
  nil
end

.listObject



23
24
25
# File 'lib/cred_stash.rb', line 23

def list
  Repository.instance.list.inject({}) {|h, item| h[item.name] = item.version; h }
end

.list_with_versionObject



27
28
29
30
31
32
33
34
# File 'lib/cred_stash.rb', line 27

def list_with_version
  Repository.instance.list.inject([]) do |h, item|
    h.push({
      "name" => item.name,
      "version" => item.version
    })
  end
end

.put(name, value, kms_key_id: nil, context: {}) ⇒ Object



17
18
19
20
21
# File 'lib/cred_stash.rb', line 17

def put(name, value, kms_key_id: nil, context: {})
  secret = Secret.new(name: name, value: value, context: context)
  secret.encrypt!(kms_key_id: kms_key_id)
  secret.save
end

.setupObject



42
43
44
# File 'lib/cred_stash.rb', line 42

def setup
  Repository.instance.setup
end