shh 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -6,7 +6,7 @@ This is a command line utility for managing secure information such as accounts,
6
6
 
7
7
  You won't be hiding anything from the NSA with this level of encryption so it isn't recommended that you make your repository publicly accessible.
8
8
 
9
- Now with more tab completion!
9
+ Now with more tab completion and multi line editing!
10
10
 
11
11
  = Usage
12
12
 
@@ -48,40 +48,41 @@ This mode allows you to view and edit 'entries' (which are encrypted hashes stor
48
48
  rememberthemilk (a499f612-d034-4e49-82a8-6967d29653a1)
49
49
 
50
50
  * list - list entries
51
- * edit,<name> - edit or create entry
52
- * view,<name> - view entry
51
+ * edit <name> - edit or create entry
52
+ * view <name> - view entry
53
53
  * quit
54
54
 
55
55
  == Viewing mode
56
56
 
57
57
  This mode allows you to view (but not edit) an existing entry
58
58
 
59
- > view,bitbucket
59
+ > view bitbucket
60
60
  (bitbucket) > list
61
61
  id,name,password,username
62
- (bitbucket) > view,username
62
+ (bitbucket) > view username
63
63
  markryall
64
64
 
65
65
  list keys, show key, copy key or quit? c password
66
66
 
67
67
  * list - show entry keys
68
- * view,<key> - view entry value on screen
69
- * copy,<key> - copy entry value to clipboard
70
- * launch,<key> - launch entry value in default browser (available if it starts with http)
68
+ * view <key> - view entry value on screen
69
+ * copy <key> - copy entry value to clipboard
70
+ * launch <key> - launch entry value in default browser (available if it starts with http)
71
71
  * quit
72
72
 
73
73
  == Editing mode
74
74
 
75
75
  This mode is viewing mode plus some editing commands
76
76
 
77
- > edit,bitbucket
78
- (bitbucket) > edit,foo
77
+ > edit bitbucket
78
+ (bitbucket) > set foo
79
79
  Enter new value for foo
80
80
  bar
81
- (bitbucket) > delete,foo
81
+ (bitbucket) > delete foo
82
82
 
83
- * edit,<key> - edit or create key
84
- * delete,<key> - remove a key
83
+ * edit <key> - edit or create key using text editor (notepad or EDITOR)
84
+ * set <key> - edit or create key from prompt
85
+ * delete <key> - remove a key
85
86
 
86
87
  == Quitting mode
87
88
 
@@ -91,6 +92,5 @@ You don't want to be a quitter
91
92
 
92
93
  * Add some color
93
94
  * Add help
94
- * Add multi line values (edit with default text editor)
95
95
  * Include uuid as part of encryption key (and upgrade encryption on existing entries)
96
96
  * add some source control (hg/git) commands
@@ -22,9 +22,9 @@ module Shh
22
22
  refresh
23
23
  when 'list'
24
24
  @entries.sort.each {|entry| say entry }
25
- when /^view,(.*)/
25
+ when /^view (.*)/
26
26
  view $1
27
- when /^edit,(.*)/
27
+ when /^edit (.*)/
28
28
  edit $1
29
29
  end
30
30
  puts
@@ -40,12 +40,13 @@ module Shh
40
40
  @entries = []
41
41
  @repository.each_entry do |entry|
42
42
  @entries << "#{entry['name']} (#{entry['id']})"
43
- commands << "edit,#{entry['name']}"
44
- commands << "view,#{entry['name']}"
43
+ commands << "edit #{entry['name']}"
44
+ commands << "view #{entry['name']}"
45
45
  end
46
46
  Readline.completion_proc = lambda do |text|
47
47
  commands.grep( /^#{Regexp.escape(text)}/ ).sort
48
48
  end
49
+ Readline.completer_word_break_characters = ''
49
50
  end
50
51
 
51
52
  def edit name
@@ -20,15 +20,17 @@ module Shh
20
20
  return @hash
21
21
  when 'list'
22
22
  say(@hash.keys.sort.join(','))
23
- when /^edit,(.*)/
23
+ when /^set (.*)/
24
+ set $1
25
+ when /^edit (.*)/
24
26
  edit $1
25
- when /^copy,(.*)/
27
+ when /^copy (.*)/
26
28
  copy $1
27
- when /^launch,(.*)/
29
+ when /^launch (.*)/
28
30
  launch $1
29
- when /^delete,(.*)/
31
+ when /^delete (.*)/
30
32
  delete $1
31
- when /^view,(.*)/
33
+ when /^view (.*)/
32
34
  view $1
33
35
  end
34
36
  end
@@ -62,9 +64,16 @@ private
62
64
  @clipboard.content = @hash[key] if can_copy?(key)
63
65
  end
64
66
 
67
+ def set key
68
+ if can_edit?
69
+ set_value key
70
+ refresh
71
+ end
72
+ end
73
+
65
74
  def edit key
66
75
  if can_edit?
67
- @hash[key] = new_value(key)
76
+ edit_value key
68
77
  refresh
69
78
  end
70
79
  end
@@ -83,19 +92,36 @@ private
83
92
  def refresh
84
93
  commands = ['list', 'quit']
85
94
  @hash.keys.each do |key|
86
- commands << "edit,#{key}" if can_edit?
87
- commands << "delete,#{key}" if can_edit?
88
- commands << "view,#{key}"
89
- commands << "copy,#{key}" if can_copy?(key)
90
- commands << "launch,#{key}" if can_launch?(key)
95
+ commands << "edit #{key}" if can_edit?
96
+ commands << "set #{key}" if can_edit?
97
+ commands << "delete #{key}" if can_edit?
98
+ commands << "view #{key}"
99
+ commands << "copy #{key}" if can_copy?(key)
100
+ commands << "launch #{key}" if can_launch?(key)
91
101
  end
92
102
  Readline.completion_proc = lambda do |text|
93
103
  commands.grep( /^#{Regexp.escape(text)}/ ).sort
94
104
  end
105
+ Readline.completer_word_break_characters = ''
95
106
  end
96
107
 
97
108
  def new_value key
98
- @prompt.get "Enter new value for #{key}", :silent => (key =~ /pass/)
109
+ new_value = @prompt.get("Enter new value for #{key}", :silent => (key =~ /pass/))
110
+ @hash[key] = new_value if new_value.length > 0
111
+ end
112
+
113
+ def edit_value key
114
+ tmp_file = Pathname.new("key.tmp")
115
+ begin
116
+ tmp_file.open('w') { |out| out.print @hash[key] }
117
+ editor = ENV["EDITOR"] || "notepad"
118
+ system("#{editor} key.tmp")
119
+ return unless $?.to_i == 0
120
+ new_value = tmp_file.read
121
+ @hash[key] = new_value if new_value.length > 0
122
+ ensure
123
+ tmp_file.unlink
124
+ end
99
125
  end
100
126
  end
101
127
  end
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.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Ryall
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-26 00:00:00 +11:00
12
+ date: 2009-12-29 00:00:00 +11:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency