shh 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/shh +1 -1
- data/lib/shh.rb +25 -1
- data/lib/shh/darwin10_launcher.rb +5 -0
- data/lib/shh/entries_menu.rb +3 -5
- data/lib/shh/entry_menu.rb +52 -14
- data/lib/shh/prompt.rb +1 -1
- data/lib/shh/win32_launcher.rb +5 -0
- metadata +3 -2
- data/lib/shh/clipboard.rb +0 -13
data/bin/shh
CHANGED
data/lib/shh.rb
CHANGED
@@ -1 +1,25 @@
|
|
1
|
-
|
1
|
+
module Shh
|
2
|
+
def self.clipboard
|
3
|
+
if RUBY_PLATFORM =~ /mswin32/
|
4
|
+
require 'shh/win32_clipboard'
|
5
|
+
return Win32Clipboard.new
|
6
|
+
end
|
7
|
+
if RUBY_PLATFORM =~ /darwin10/
|
8
|
+
require 'shh/darwin10_clipboard'
|
9
|
+
return Darwin10Clipboard.new
|
10
|
+
end
|
11
|
+
nil
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.launcher
|
15
|
+
if RUBY_PLATFORM =~ /mswin32/
|
16
|
+
require 'shh/win32_launcher'
|
17
|
+
return Win32Launcher.new
|
18
|
+
end
|
19
|
+
if RUBY_PLATFORM =~ /darwin10/
|
20
|
+
require 'shh/darwin10_launcher'
|
21
|
+
return Darwin10Launcher.new
|
22
|
+
end
|
23
|
+
nil
|
24
|
+
end
|
25
|
+
end
|
data/lib/shh/entries_menu.rb
CHANGED
@@ -21,7 +21,7 @@ module Shh
|
|
21
21
|
when 'refresh'
|
22
22
|
refresh
|
23
23
|
when 'list'
|
24
|
-
|
24
|
+
@entries.each {|entry| say entry }
|
25
25
|
when /^view (.*)/
|
26
26
|
view $1
|
27
27
|
when /^edit (.*)/
|
@@ -37,7 +37,9 @@ module Shh
|
|
37
37
|
|
38
38
|
def refresh
|
39
39
|
commands = ['list', 'refresh', 'quit']
|
40
|
+
@entries = []
|
40
41
|
@repository.each_entry do |entry|
|
42
|
+
@entries << "#{entry['name']} (#{entry['id']})"
|
41
43
|
commands << "edit #{entry['name']}"
|
42
44
|
commands << "view #{entry['name']}"
|
43
45
|
end
|
@@ -47,10 +49,6 @@ module Shh
|
|
47
49
|
Readline.completer_word_break_characters = ''
|
48
50
|
end
|
49
51
|
|
50
|
-
def list
|
51
|
-
@repository.each_entry {|entry| say "#{entry['name']} (#{entry['id']})" }
|
52
|
-
end
|
53
|
-
|
54
52
|
def edit name
|
55
53
|
entry = @repository.find_entry(name)
|
56
54
|
entry ||= {'name' => name, 'id' => UUIDTools::UUID.random_create.to_s}
|
data/lib/shh/entry_menu.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
-
require 'shh
|
1
|
+
require 'shh'
|
2
2
|
|
3
3
|
module Shh
|
4
4
|
class EntryMenu
|
5
5
|
def initialize prompt, hash, read_only=false
|
6
6
|
@prompt, @hash, @read_only = prompt, hash, read_only
|
7
7
|
@clipboard = Shh.clipboard
|
8
|
+
@launcher = Shh.launcher
|
8
9
|
refresh
|
9
10
|
end
|
10
11
|
|
@@ -20,17 +21,15 @@ module Shh
|
|
20
21
|
when 'list'
|
21
22
|
say(@hash.keys.sort.join(','))
|
22
23
|
when /^edit (.*)/
|
23
|
-
|
24
|
-
@hash[name] = new_value(name) unless @read_only
|
24
|
+
edit $1
|
25
25
|
when /^copy (.*)/
|
26
|
-
|
27
|
-
|
26
|
+
copy $1
|
27
|
+
when /^launch (.*)/
|
28
|
+
launch $1
|
28
29
|
when /^delete (.*)/
|
29
|
-
|
30
|
-
@hash.delete(name) unless @read_only
|
30
|
+
delete $1
|
31
31
|
when /^show (.*)/
|
32
|
-
|
33
|
-
say(@hash[name]) if @hash[name]
|
32
|
+
show $1
|
34
33
|
end
|
35
34
|
end
|
36
35
|
rescue Interrupt => e
|
@@ -43,13 +42,52 @@ module Shh
|
|
43
42
|
|
44
43
|
private
|
45
44
|
|
45
|
+
def can_copy? key
|
46
|
+
@clipboard and @hash[key]
|
47
|
+
end
|
48
|
+
|
49
|
+
def can_edit?
|
50
|
+
!@read_only
|
51
|
+
end
|
52
|
+
|
53
|
+
def can_launch? key
|
54
|
+
@launcher and @hash[key] =~ /^http\:\/\//
|
55
|
+
end
|
56
|
+
|
57
|
+
def show key
|
58
|
+
say(@hash[key]) if @hash[key]
|
59
|
+
end
|
60
|
+
|
61
|
+
def copy key
|
62
|
+
@clipboard.content = @hash[key] if can_copy?(key)
|
63
|
+
end
|
64
|
+
|
65
|
+
def edit key
|
66
|
+
if can_edit?
|
67
|
+
@hash[key] = new_value(key)
|
68
|
+
refresh
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def delete key
|
73
|
+
if can_edit?
|
74
|
+
@hash.delete(key)
|
75
|
+
refresh
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def launch key
|
80
|
+
@launcher.launch @hash[key] if can_launch?(key)
|
81
|
+
end
|
82
|
+
|
46
83
|
def refresh
|
47
84
|
commands = ['list', 'quit']
|
48
85
|
@hash.keys.each do |key|
|
49
|
-
commands << "edit #{key}"
|
50
|
-
commands << "delete #{key}"
|
86
|
+
commands << "edit #{key}" if can_edit?
|
87
|
+
commands << "delete #{key}" if can_edit?
|
51
88
|
commands << "show #{key}"
|
52
|
-
commands << "copy #{key}"
|
89
|
+
commands << "copy #{key}" if can_copy?(key)
|
90
|
+
commands << "launch #{key}" if can_launch?(key)
|
53
91
|
end
|
54
92
|
Readline.completion_proc = lambda do |text|
|
55
93
|
commands.grep( /^#{Regexp.escape(text)}/ ).sort
|
@@ -57,8 +95,8 @@ private
|
|
57
95
|
Readline.completer_word_break_characters = ''
|
58
96
|
end
|
59
97
|
|
60
|
-
def new_value
|
61
|
-
@prompt.get "Enter new value for #{
|
98
|
+
def new_value key
|
99
|
+
@prompt.get "Enter new value for #{key}", :silent => (key =~ /pass/)
|
62
100
|
end
|
63
101
|
end
|
64
102
|
end
|
data/lib/shh/prompt.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mark Ryall
|
@@ -64,14 +64,15 @@ extra_rdoc_files: []
|
|
64
64
|
|
65
65
|
files:
|
66
66
|
- lib/shh/cli.rb
|
67
|
-
- lib/shh/clipboard.rb
|
68
67
|
- lib/shh/crypt.rb
|
69
68
|
- lib/shh/darwin10_clipboard.rb
|
69
|
+
- lib/shh/darwin10_launcher.rb
|
70
70
|
- lib/shh/entries_menu.rb
|
71
71
|
- lib/shh/entry_menu.rb
|
72
72
|
- lib/shh/prompt.rb
|
73
73
|
- lib/shh/repository.rb
|
74
74
|
- lib/shh/win32_clipboard.rb
|
75
|
+
- lib/shh/win32_launcher.rb
|
75
76
|
- lib/shh.rb
|
76
77
|
- bin/shh
|
77
78
|
- README.rdoc
|
data/lib/shh/clipboard.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
module Shh
|
2
|
-
def self.clipboard
|
3
|
-
if RUBY_PLATFORM =~ /mswin32/
|
4
|
-
require 'shh/win32_clipboard'
|
5
|
-
return Win32Clipboard.new
|
6
|
-
end
|
7
|
-
if RUBY_PLATFORM =~ /darwin10/
|
8
|
-
require 'shh/darwin10_clipboard'
|
9
|
-
return Darwin10Clipboard.new
|
10
|
-
end
|
11
|
-
nil
|
12
|
-
end
|
13
|
-
end
|