Class: Keyring::CLI

Inherits:
Object
  • Object
show all
Defined in:
lib/keyring/cli.rb

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ CLI

Returns a new instance of CLI.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/keyring/cli.rb', line 8

def initialize(options={})
  @options = options
  
  @method = @arg = nil
  @opts = Slop.parse(:help => true) do
    banner 'Usage: keyring get|set|delete <service> <username> [password (for set)]'
    
    on :v, :version, 'Print the version' do
      puts Keyring::VERSION
      exit
    end
    
    command 'set' do
      # FIXME: option to prompt for password
      run do |opts, args|
        @method = :set
        @arg = args
      end
    end
    command 'get' do
      run do |opts, args|
        @method = :get
        @arg = args
      end
    end
    command 'delete' do
      run do |opts, args|
        @method = :delete
        @arg = args
      end
    end
  end
end

Instance Method Details

#delete(args) ⇒ Object



61
62
63
64
65
# File 'lib/keyring/cli.rb', line 61

def delete(args)
  ensure_arg_presence(args, 2)
  keyring = Keyring.new
  keyring.delete_password(args[0], args[1])
end

#ensure_arg_presence(args, count) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/keyring/cli.rb', line 67

def ensure_arg_presence(args, count)
  0.upto(count-1) do |i|
    if !args[i] || args[i].empty?
      if !@options[:testing]
        puts @opts
        exit 1
      else
        raise ArgumentError
      end
    end
  end
end

#get(args) ⇒ Object



56
57
58
59
60
# File 'lib/keyring/cli.rb', line 56

def get(args)
  ensure_arg_presence(args, 2)
  keyring = Keyring.new
  puts keyring.get_password(args[0], args[1])
end

#mainObject



42
43
44
45
46
47
48
49
# File 'lib/keyring/cli.rb', line 42

def main
  if @method && respond_to?(@method)
    send(@method, @arg)
  else
    puts @opts
    exit 1
  end
end

#set(args) ⇒ Object



51
52
53
54
55
# File 'lib/keyring/cli.rb', line 51

def set(args)
  ensure_arg_presence(args, 3)
  keyring = Keyring.new
  keyring.set_password(args[0], args[1], args[2])
end