sesame-cli 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8946385f1c8994446d910c37ecab7b3fe5497d7753f156c47ba9f3d70d655631
4
- data.tar.gz: 515d7680020974e60217383d1245e829ff8b0486e915b072a0950c2acf41ad1c
3
+ metadata.gz: 7e9e49b899f85759b86942eb6a051205e3db2f5adef20d6026ca31862b2724af
4
+ data.tar.gz: 84ae67770bb80de8854a1044b35f4b19364715383b18065507ba5cc5c8e9e183
5
5
  SHA512:
6
- metadata.gz: 1796899e14a5bbc257b7ad781be05a64ede3e2b3c673bf44fd49ff67b7dc5fa40d5b45e40fe7f82140a3553f61628e761a49e790ebb072e3dc8d4d51f1882b58
7
- data.tar.gz: bcbefe388969f696f1dfc778837991543b0fdc1f6811ae7e968529ac353a514ec2ce74c267c09204f93d4239f93e32182555dfb2c1beebc2456331adf0b9e5d8
6
+ metadata.gz: '07078b42b50a933caeb46187d494fb0981439a963d48e3445e0b3b6c6ef3e8328460ea39baa994152dd28c319d44aebf9f7a46b6b486f245de16b62b3e113834'
7
+ data.tar.gz: 14607f8208e44a33833ca234ebf5c441a0e2bdca8e3eb02336a70cd14ec63260979f06a83ef7e85d76f2da25332598238a3a7ddd0d4f08589a60c330fe91e3ac
data/.rubocop.yml ADDED
@@ -0,0 +1,6 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.5
3
+ Exclude:
4
+ - sesame-cli.gemspec
5
+ Metrics:
6
+ Enabled: false
data/Gemfile CHANGED
@@ -1,4 +1,6 @@
1
- source "https://rubygems.org"
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
2
4
 
3
5
  gem 'bases', '~> 1.0'
4
6
  gem 'clipboard', '~> 1.1'
@@ -15,6 +17,7 @@ group :development do
15
17
  gem 'jeweler', '~> 2.3.9'
16
18
  gem 'rdoc', '~> 6.0'
17
19
  gem 'rspec', '~> 3.7'
20
+ gem 'rubocop', '~> 0.55'
18
21
  gem 'simplecov', '~> 0.15'
19
22
  gem 'yard', '~> 0.9'
20
23
  end
data/Gemfile.lock CHANGED
@@ -2,6 +2,7 @@ GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
4
  addressable (2.4.0)
5
+ ast (2.4.0)
5
6
  awesome_print (1.8.0)
6
7
  bases (1.0.2)
7
8
  builder (3.2.3)
@@ -54,8 +55,13 @@ GEM
54
55
  multi_json (~> 1.3)
55
56
  multi_xml (~> 0.5)
56
57
  rack (>= 1.2, < 3)
58
+ parallel (1.12.1)
59
+ parser (2.5.1.0)
60
+ ast (~> 2.4.0)
61
+ powerpack (0.1.1)
57
62
  psych (3.0.2)
58
63
  rack (2.0.4)
64
+ rainbow (3.0.0)
59
65
  rake (12.3.1)
60
66
  rbnacl (5.0.0)
61
67
  ffi
@@ -75,6 +81,14 @@ GEM
75
81
  diff-lcs (>= 1.2.0, < 2.0)
76
82
  rspec-support (~> 3.7.0)
77
83
  rspec-support (3.7.1)
84
+ rubocop (0.55.0)
85
+ parallel (~> 1.10)
86
+ parser (>= 2.5)
87
+ powerpack (~> 0.1)
88
+ rainbow (>= 2.2.2, < 4.0)
89
+ ruby-progressbar (~> 1.7)
90
+ unicode-display_width (~> 1.0, >= 1.0.1)
91
+ ruby-progressbar (1.9.0)
78
92
  semver2 (3.4.2)
79
93
  simplecov (0.16.1)
80
94
  docile (~> 1.1)
@@ -83,6 +97,7 @@ GEM
83
97
  simplecov-html (0.10.2)
84
98
  slop (4.6.2)
85
99
  thread_safe (0.3.6)
100
+ unicode-display_width (1.3.2)
86
101
  yard (0.9.12)
87
102
 
88
103
  PLATFORMS
@@ -101,6 +116,7 @@ DEPENDENCIES
101
116
  rbnacl-libsodium (~> 1.0)
102
117
  rdoc (~> 6.0)
103
118
  rspec (~> 3.7)
119
+ rubocop (~> 0.55)
104
120
  simplecov (~> 0.15)
105
121
  slop (~> 4.6)
106
122
  yard (~> 0.9)
data/README.md CHANGED
@@ -5,7 +5,8 @@
5
5
  Sesame
6
6
  ======
7
7
 
8
- Sesame is a simple password manager for the command-line.
8
+ Sesame is a simple password manager for the command-line. See the [full
9
+ documentation](http://www.rubydoc.info/gems/sesame-cli).
9
10
 
10
11
  Creating a Cave
11
12
  ---------------
@@ -20,7 +21,7 @@ passphrase; omit `--echo` to have this copied to the clipboard instead.
20
21
 
21
22
  ```
22
23
  $ gem install sesame
23
- $ sesame --echo
24
+ $ sesame --echo --interactive
24
25
  ╔═════════════════════════════════════╗
25
26
  ║ ┏━━━┓ ┏━━━┓ ┏━━━┓ ┏━┓ ┏┓ ┏┓ ┏━━━┓ ║
26
27
  ║ ┗━╋━┓ ┣━━┫ ┗━╋━┓ ┏┻━┻┓ ┃┗┳┛┃ ┣━━┫ ║
@@ -44,9 +45,9 @@ mammal glue wage paper store detail weave date
44
45
  sky tea ant ice
45
46
  ```
46
47
 
47
- You will notice that Sesame enters interactive mode, allowing you to issue
48
- multiple commands in a single session. When you exit from interactive mode, the
49
- cave will be locked with a short code.
48
+ You will notice that Sesame enters interactive mode when the `--interactive`
49
+ argument is given, allowing you to issue multiple commands in a single session.
50
+ When you exit from interactive mode, the cave will be locked with a short code.
50
51
 
51
52
  Remembering the Passphrase
52
53
  --------------------------
@@ -58,7 +59,7 @@ home, from the front door to the bathroom).
58
59
 
59
60
  * I enter the front door. On the side table a mammal is glueing their wages together.
60
61
  * Turning left into the kitchen, I see the drawer where I store my paper.
61
- * Looking down the corridor, I notice a detailed weave of a date on the bathroom door.
62
+ * Looking down the corridor, I notice a detailed weaving of a date on the bathroom door.
62
63
 
63
64
  Lame perhaps, but easier to remember than `58qWT6jHpA566MX` (and just as
64
65
  secure).
@@ -100,9 +101,9 @@ Listing Services
100
101
  ```
101
102
  > list
102
103
  🧞 - "Behold! Tremble in awe at the greatness of these heroes!"
103
- twitter
104
- facebook
104
+ facebook (lloyd@kranzky.com)
105
105
  google (2)
106
+ twitter (kranzky)
106
107
  ```
107
108
 
108
109
  If several user accounts exist for the same service, a number will be displayed
@@ -135,8 +136,19 @@ particular service. The `next` command allows you to do that.
135
136
 
136
137
  ```
137
138
  > next google lloyd@kranzky.com
139
+ 🧞 - "I have recast the magic words for lloyd@kranzky.com of google..."
140
+ chore proud barrel docile
138
141
  ```
139
142
 
143
+ You can also update the lock code in a similar way.
144
+
145
+ ```
146
+ > next sesame
147
+ 🧞 - "I shall forge you a new key for locking your cave."
148
+ ```
149
+
150
+ The new code will be used when you next exit from interactive mode.
151
+
140
152
  Removing a Service
141
153
  ------------------
142
154
 
@@ -144,6 +156,8 @@ You can delete services from your cave.
144
156
 
145
157
  ```
146
158
  > delete google pazu@kranzky.com
159
+ 🧞 - "These magic words for pazy@kranzky.com of google are no more..."
160
+ lazy cape green badge
147
161
  ```
148
162
 
149
163
  Recovering a Lost Cave
@@ -167,25 +181,26 @@ Run with the `--help` argument to view all options.
167
181
  $ sesame --help
168
182
  usage: ./bin/sesame [options]
169
183
  -p, --path the path to the sesame cave; overrides $SESAME_PATH and .sesamerc
170
- -s, --service the name of the service (e.g. Twitter)
171
- -u, --user the username for the given service (e.g. user@test.com)
172
- -o, --offset the password index for the service and username (defaults to 0)
184
+ -q, --quiet silence the welcome banner and the jinn
173
185
  -e, --echo display passwords in plain text instead of adding to the clipboard
174
- -i, --interactive launch an interactive cli, allowing commands to be issued
175
186
  -r, --reconstruct reconstruct a sesame cave from an existing passphrase
176
- -x, --expunge remove the temporary lock; the full passphrase will be required
187
+ -k, --lock create a temporary lock; no passphrase required on next run
188
+ -x, --expunge remove the temporary lock; full passphrase required on next run
189
+ -i, --interactive launch an interactive cli, allowing commands to be issued
177
190
  -c, --command the command to execute; one of: list, get, add, next, delete
178
191
  -l, --list show all services and usernames
179
192
  -a, --add add a new service and username
180
- -g, --get get the current password for an existing service and username
181
- -n, --next generate a new password for an existing service and username
193
+ -g, --get get the password for a service and username
194
+ -n, --next generate a new password for a service and username
182
195
  -d, --delete remove an existing service and username
183
- -q, --quiet silence the jinn
196
+ -s, --service the name of the service (e.g. Facebook)
197
+ -u, --user the username for the service (e.g. user@test.com)
198
+ -o, --offset the password offset to use (overrides current)
184
199
  -v, --version print the version and exit
185
200
  -h, --help all of that up there ^
186
201
  ```
187
202
 
188
- You can issue commands directly, which will suppress interactive mode.
203
+ You can issue commands directly, rather than running in interactive mode.
189
204
 
190
205
  ```
191
206
  $ sesame -qegs twitter
@@ -205,15 +220,14 @@ stored.
205
220
 
206
221
  Sesame will also look for a file named `.sesamerc` or `sesame.cfg` in the
207
222
  current directory and in your home directory. This file should be in the JSON
208
- format, and can specify the `path`, `user`, `echo` and `quiet` options. For
209
- example, here is the configuration file used by Lloyd Kranzky:
223
+ format, and can specify the `path`, `echo`, `interactive` and `quiet` options.
224
+ For example:
210
225
 
211
226
  ```
212
227
  {
213
228
  "path": "~/Dropbox",
214
- "user": "lloyd@kranzky.com",
215
- "echo": "false",
216
- "quiet": "true"
229
+ "interactive": false,
230
+ "quiet": true
217
231
  }
218
232
  ```
219
233
 
data/Rakefile CHANGED
@@ -1,28 +1,26 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  require 'rubygems'
4
4
  require 'bundler'
5
5
  begin
6
6
  Bundler.setup(:default, :development)
7
7
  rescue Bundler::BundlerError => e
8
- $stderr.puts e.message
9
- $stderr.puts "Run `bundle install` to install missing gems"
8
+ warn e.message
9
+ warn 'Run `bundle install` to install missing gems'
10
10
  exit e.status_code
11
11
  end
12
12
  require 'rake'
13
13
 
14
14
  require 'jeweler'
15
15
  Jeweler::Tasks.new do |gem|
16
- # gem is a Gem::Specification... see http://guides.rubygems.org/specification-reference/ for more options
17
- gem.name = "sesame-cli"
18
- gem.homepage = "http://github.com/kranzky/sesame-cli"
19
- gem.license = "UNLICENSE"
20
- gem.summary = %Q{Sesame is a simple password manager for the command-line.}
21
- gem.description = %Q{Sesame is a simple password manager for the command-line.}
22
- gem.email = "jasonhutchens@gmail.com"
23
- gem.authors = ["Jason Hutchens", "Jack Casey"]
24
- gem.required_ruby_version = "~> 2.1"
25
- # dependencies defined in Gemfile
16
+ gem.name = 'sesame-cli'
17
+ gem.homepage = 'http://github.com/kranzky/sesame-cli'
18
+ gem.license = 'UNLICENSE'
19
+ gem.summary = %(🧞 - "Sesame is a simple password manager for the command-line!")
20
+ gem.description = %(🧞 - "Sesame is a simple password manager for the command-line!")
21
+ gem.email = 'jasonhutchens@gmail.com'
22
+ gem.authors = ['Jason Hutchens', 'Jack Casey']
23
+ gem.required_ruby_version = '~> 2.1'
26
24
  end
27
25
  Jeweler::RubygemsDotOrgTasks.new
28
26
 
@@ -32,13 +30,13 @@ RSpec::Core::RakeTask.new(:spec) do |spec|
32
30
  spec.pattern = FileList['spec/**/*_spec.rb']
33
31
  end
34
32
 
35
- desc "Code coverage detail"
33
+ desc 'Code coverage detail'
36
34
  task :simplecov do
37
- ENV['COVERAGE'] = "true"
35
+ ENV['COVERAGE'] = 'true'
38
36
  Rake::Task['spec'].execute
39
37
  end
40
38
 
41
- task :default => :spec
39
+ task default: :spec
42
40
 
43
41
  require 'yard'
44
42
  YARD::Rake::YardocTask.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
data/bin/sesame CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'sesame'
4
5
  require 'slop'
@@ -7,20 +8,21 @@ opts =
7
8
  begin
8
9
  Slop.parse do |o|
9
10
  o.string '-p', '--path', 'the path to the sesame cave; overrides $SESAME_PATH and .sesamerc'
10
- o.string '-s', '--service', 'the name of the service (e.g. Twitter)'
11
- o.string '-u', '--user', 'the username for the given service (e.g. user@test.com)'
12
- o.integer '-o', '--offset', 'the password index for the service and username (defaults to 0)'
11
+ o.bool '-q', '--quiet', 'silence the welcome banner and the jinn'
13
12
  o.bool '-e', '--echo', 'display passwords in plain text instead of adding to the clipboard'
14
- o.bool '-i', '--interactive', 'launch an interactive cli, allowing commands to be issued'
15
13
  o.bool '-r', '--reconstruct', 'reconstruct a sesame cave from an existing passphrase'
16
- o.bool '-x', '--expunge', 'remove the temporary lock; the full passphrase will be required'
14
+ o.bool '-k', '--lock', 'create a temporary lock; no passphrase required on next run'
15
+ o.bool '-x', '--expunge', 'remove the temporary lock; full passphrase required on next run'
16
+ o.bool '-i', '--interactive', 'launch an interactive cli, allowing commands to be issued'
17
17
  o.string '-c', '--command', 'the command to execute; one of: list, get, add, next, delete'
18
18
  o.bool '-l', '--list', 'show all services and usernames'
19
19
  o.bool '-a', '--add', 'add a new service and username'
20
- o.bool '-g', '--get', 'get the current password for an existing service and username'
21
- o.bool '-n', '--next', 'generate a new password for an existing service and username'
20
+ o.bool '-g', '--get', 'get the password for a service and username'
21
+ o.bool '-n', '--next', 'generate a new password for a service and username'
22
22
  o.bool '-d', '--delete', 'remove an existing service and username'
23
- o.bool '-q', '--quiet', 'silence the jinn'
23
+ o.string '-s', '--service', 'the name of the service (e.g. Facebook)'
24
+ o.string '-u', '--user', 'the username for the service (e.g. user@test.com)'
25
+ o.integer '-o', '--offset', 'the password offset to use (overrides current)'
24
26
  o.on '-v', '--version', 'print the version and exit' do
25
27
  say(File.read(File.join(File.dirname(__FILE__), '..', 'VERSION')))
26
28
  exit
@@ -31,10 +33,10 @@ opts =
31
33
  end
32
34
  end
33
35
  rescue Slop::Error => e
34
- say(e.message + " (try --help)")
36
+ say(e.message + ' (try --help)')
35
37
  exit 1
36
38
  end
37
- if opts.arguments.count > 0
39
+ if opts.arguments.count.positive?
38
40
  say("extraneous arguments: #{opts.arguments.join(' ')} (try --help)")
39
41
  exit 1
40
42
  end