Class: Bastille::CLI::Vault

Inherits:
Thor
  • Object
show all
Includes:
Common
Defined in:
lib/bastille/cli/vault.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.descriptionObject



10
11
12
# File 'lib/bastille/cli/vault.rb', line 10

def self.description
  'Provides access to your vaults'
end

.usageObject



6
7
8
# File 'lib/bastille/cli/vault.rb', line 6

def self.usage
  'vault [TASK]'
end

Instance Method Details

#delete(space_vault, key = nil) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/bastille/cli/vault.rb', line 61

def delete(space_vault, key = nil)
  space, vault = space_vault.split(':')
  return say('Expected a : delimited space and vault argument (ie. defunkt:resque)', :red) unless space && vault

  question = if key.nil?
    "Are you sure you want to delete the #{space}:#{vault} vault?"
  else
    "Are you sure you want to remove the #{key} key from the #{space}:#{vault} vault?"
  end

  if yes?(question)
    response = Client.new(store).delete(space, vault, key)
    if response.success?
      say response.body, :green
    else
      say response.error_message, :red
    end
  else
    say 'OK, nothing was deleted.', :green
  end
end

#get(space_vault) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/bastille/cli/vault.rb', line 42

def get(space_vault)
  space, vault = space_vault.split(':')
  return say('Expected a : delimited space and vault argument (ie. defunkt:resque)', :red) unless space && vault

  response = Client.new(store).get(space, vault)
  if response.success?
    if response.body.empty?
      say 'There are no keys in this vault.', :yellow
    else
      response.body.sort.each do |key, value|
        say "#{key}=#{value}"
      end
    end
  else
    say response.error_message, :red
  end
end

#listObject



15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/bastille/cli/vault.rb', line 15

def list
  if (response = Client.new(store).vaults).success?
    response.body.sort.each do |owner, vaults|
      say "  #{owner}:"
      vaults.sort.each do |vault|
        say "    #{vault}"
      end
    end
  else
    say response.error_message, :red
  end
end

#set(space_vault, key_value) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/bastille/cli/vault.rb', line 29

def set(space_vault, key_value)
  space, vault = space_vault.split(':')
  return say('Expected a : delimited space and vault argument (ie. defunkt:resque)', :red) unless space && vault
  key, value = key_value.split('=')
  response = Client.new(store).set(space, vault, key, value)
  if response.success?
    say "\"#{key} => #{value}\" has been added to the #{space}:#{vault} vault.", :green
  else
    say response.error_message, :red
  end
end