Class: Shhh::App::KeyChain

Inherits:
Object
  • Object
show all
Defined in:
lib/shhh/app/keychain.rb

Overview

This class forms and shells several commands that wrap Mac OS-X security command. They provide access to storing generic passwords in the KeyChain Access.

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(key_name, opts = {}) ⇒ KeyChain

Returns a new instance of KeyChain


34
35
36
37
38
# File 'lib/shhh/app/keychain.rb', line 34

def initialize(key_name, opts = {})
  self.key_name = key_name
  self.opts     = opts
  self.class.validate!
end

Class Attribute Details

.kindObject

Returns the value of attribute kind


14
15
16
# File 'lib/shhh/app/keychain.rb', line 14

def kind
  @kind
end

.sub_sectionObject

Returns the value of attribute sub_section


14
15
16
# File 'lib/shhh/app/keychain.rb', line 14

def sub_section
  @sub_section
end

.userObject

Returns the value of attribute user


14
15
16
# File 'lib/shhh/app/keychain.rb', line 14

def user
  @user
end

Instance Attribute Details

#key_nameObject

Returns the value of attribute key_name


32
33
34
# File 'lib/shhh/app/keychain.rb', line 32

def key_name
  @key_name
end

#optsObject

Returns the value of attribute opts


32
33
34
# File 'lib/shhh/app/keychain.rb', line 32

def opts
  @opts
end

#stderr_disabledObject

Returns the value of attribute stderr_disabled


32
33
34
# File 'lib/shhh/app/keychain.rb', line 32

def stderr_disabled
  @stderr_disabled
end

Class Method Details

.configure {|_self| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:


16
17
18
# File 'lib/shhh/app/keychain.rb', line 16

def configure
  yield self
end

.validate!Object

Raises:

  • (ArgumentError)

20
21
22
23
# File 'lib/shhh/app/keychain.rb', line 20

def validate!
  raise ArgumentError.new(
    'User is not defined. Either set $USER in environment, or directly on the class.') unless self.user
end

Instance Method Details

#add(password) ⇒ Object


40
41
42
# File 'lib/shhh/app/keychain.rb', line 40

def add(password)
  execute command(:add, "-U -w '#{password}' ")
end

#deleteObject


48
49
50
# File 'lib/shhh/app/keychain.rb', line 48

def delete
  execute command(:delete)
end

#execute(command) ⇒ Object


52
53
54
55
56
57
58
59
60
61
# File 'lib/shhh/app/keychain.rb', line 52

def execute(command)
  command += ' 2>/dev/null' if stderr_disabled
  puts "> #{command.yellow.green}" if opts[:verbose]
  output = `#{command}`
  result = $?
  raise Shhh::Errors::ExternalCommandError.new("Command error: #{result}, command: #{command}") unless result.success?
  output.chomp
rescue Errno::ENOENT => e
  raise Shhh::Errors::ExternalCommandError.new("Command error: #{e.message}, command: #{command}")
end

#findObject


44
45
46
# File 'lib/shhh/app/keychain.rb', line 44

def find
  execute command(:find, ' -g -w ')
end

#stderr_offObject


63
64
65
# File 'lib/shhh/app/keychain.rb', line 63

def stderr_off
  self.stderr_disabled = true
end

#stderr_onObject


67
68
69
# File 'lib/shhh/app/keychain.rb', line 67

def stderr_on
  self.stderr_disabled = false
end