kbsecret 0.5.5 → 0.5.6

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
  SHA1:
3
- metadata.gz: a3c46fd341e3a2db07a7278ce4ef7e5e5f99f1ee
4
- data.tar.gz: 9e236b7d3ad0c3396c76c85b3aa12b7f253376b9
3
+ metadata.gz: f988059d109942e54868a06c593c2f20f62972c6
4
+ data.tar.gz: a6d1d9b5b52fcb4f136eab7ead9d404111855fc9
5
5
  SHA512:
6
- metadata.gz: 2ebe7c26ed449cb6ba40979682f36efd77315c16e4b09ccaa5148665eda1b86a933c2a5f1362c598494f538729e13a65e2cd83a3dca880a94485dfd8294578fe
7
- data.tar.gz: 8adbafa4fec10a672742c4f3a4e44e4bedd802ee20c0b38bab67b18f7de8c7bdd4d43f0f1bd84d0fdfcb572ce430dec9bf76279cc0906472b11234952258338d
6
+ metadata.gz: e627e140303c2966e2f824e751edd7bdd9e48bb999160b1ba9b498b8f1c14ceebc128ac331c20d0a5729665810033851f575ce200803c11a0ef179f90ca4698e
7
+ data.tar.gz: 9700504918200ff1dd434a65466cecf666575205bcae655cac6208f12f942a8aa12e8a6348560b99f28c4f084baa51ee35c197d589ec342e3cb2ba5817036f80
data/README.md CHANGED
@@ -72,7 +72,9 @@ default
72
72
  dev-team
73
73
 
74
74
  # add an environment record to the dev-team session
75
- $ kbsecret new environment api-key API_KEY 0xBADBEEF -s dev-team
75
+ $ kbsecret new environment api-key -s dev-team
76
+ Variable?
77
+ Value?
76
78
 
77
79
  # list all records under the dev-team session
78
80
  $ kbsecret list -s dev-team
@@ -11,28 +11,29 @@ cmd = CLI.new do
11
11
  Dump all fields for the given record.
12
12
 
13
13
  Usage:
14
- kbsecret dump-fields [--session <name>] <label>
14
+ kbsecret dump-fields [--session <session>] <record>
15
15
  EOS
16
16
 
17
- o.string "-s", "--session", "the session name", default: :default
18
- o.bool "-x", "--terse", "output in field:value format"
17
+ o.string "-s", "--session", "the session to search in", default: :default
18
+ o.bool "-x", "--terse", "output in field<sep>value format"
19
19
  o.string "-i", "--ifs", "separate terse pairs with this string", default: CLI.ifs
20
20
  end
21
21
 
22
22
  dreck do
23
23
  string :label
24
24
  end
25
- end
26
25
 
27
- session = CLI.ensure_session cmd.opts[:session]
26
+ ensure_session!
27
+ end
28
28
 
29
- label = cmd.args[:label]
30
- record = session[label]
29
+ session = Session.new label: cmd.opts[:session]
30
+ label = cmd.args[:label]
31
+ record = session[label]
31
32
 
32
33
  CLI.die "No such record." unless record
33
34
 
34
35
  field_values = record.class.data_fields.map { |f| record.send f }
35
- field_pairs = record.class.data_fields.zip(field_values)
36
+ field_pairs = record.class.data_fields.zip(field_values)
36
37
 
37
38
  if cmd.opts.terse?
38
39
  puts field_pairs.map { |f, v| "#{f}#{cmd.opts[:ifs]}#{v}" }.join "\n"
data/bin/kbsecret-env CHANGED
@@ -11,14 +11,14 @@ cmd = CLI.new do
11
11
  Retrieve environment records in a source-able format.
12
12
 
13
13
  Usage:
14
- kbsecret env [--session <name>] [--all] <label1 label2 ...>
14
+ kbsecret env [--session <session>] [--all] <record [record ...]>
15
15
 
16
16
  Examples:
17
17
  kbsecret env --all
18
18
  kbsecret env staging beta
19
19
  EOS
20
20
 
21
- o.string "-s", "--session", "the session name", default: :default
21
+ o.string "-s", "--session", "the session to search in", default: :default
22
22
  o.bool "-a", "--all", "retrieve all environment records, not just listed ones"
23
23
  o.bool "-v", "--value-only", "print only the environment value, not the key"
24
24
  end
@@ -26,9 +26,11 @@ cmd = CLI.new do
26
26
  dreck do
27
27
  list :string, :labels
28
28
  end
29
+
30
+ ensure_session!
29
31
  end
30
32
 
31
- session = CLI.ensure_session cmd.opts[:session]
33
+ session = Session.new label: cmd.opts[:session]
32
34
  records = session.records :environment
33
35
 
34
36
  selected_records = if cmd.opts.all?
data/bin/kbsecret-list CHANGED
@@ -11,16 +11,18 @@ cmd = CLI.new do
11
11
  List all secrets known to the specified session (or the default session).
12
12
 
13
13
  Usage:
14
- kbsecret list [--session <name>] [--show-all]
14
+ kbsecret list [--session <session>] [--show-all]
15
15
  EOS
16
16
 
17
- o.string "-s", "--session", "the session name", default: :default
17
+ o.string "-s", "--session", "the session to list from", default: :default
18
18
  o.string "-t", "--type", "the type of secrets to list", default: nil
19
19
  o.bool "-a", "--show-all", "show everything in each secret (i.e. metadata)"
20
20
  end
21
+
22
+ ensure_session!
21
23
  end
22
24
 
23
- session = CLI.ensure_session cmd.opts[:session]
25
+ session = Session.new label: cmd.opts[:session]
24
26
 
25
27
  records = session.records cmd.opts[:type]
26
28
 
data/bin/kbsecret-login CHANGED
@@ -11,25 +11,27 @@ cmd = CLI.new do
11
11
  Retrieve login records.
12
12
 
13
13
  Usage:
14
- kbsecret login [--session <name>] <label1 label2 ...>
14
+ kbsecret login [--session <session>] <record [record ...]>
15
15
 
16
16
  Examples:
17
17
  kbsecret login --terse --ifs "*" gmail
18
18
  kbsecret login gmail netflix
19
19
  EOS
20
20
 
21
- o.string "-s", "--session", "the session name", default: :default
21
+ o.string "-s", "--session", "the session to search in", default: :default
22
22
  o.bool "-a", "--all", "retrieve all login records, not just listed ones"
23
- o.bool "-x", "--terse", "output in label:username:password format"
23
+ o.bool "-x", "--terse", "output in label<sep>username<sep>password format"
24
24
  o.string "-i", "--ifs", "separate terse fields with this string", default: CLI.ifs
25
25
  end
26
26
 
27
27
  dreck do
28
28
  list :string, :labels
29
29
  end
30
+
31
+ ensure_session!
30
32
  end
31
33
 
32
- session = CLI.ensure_session cmd.opts[:session]
34
+ session = Session.new label: cmd.opts[:session]
33
35
  records = session.records :login
34
36
 
35
37
  selected_records = if cmd.opts.all?
data/bin/kbsecret-new CHANGED
@@ -24,7 +24,7 @@ cmd = CLI.new do
24
24
  kbsecret new environment foo-api
25
25
  EOS
26
26
 
27
- o.string "-s", "--session", "the session name", default: :default
27
+ o.string "-s", "--session", "the session to contain the record", default: :default
28
28
  o.bool "-f", "--force", "force creation (ignore overwrites, etc.)"
29
29
  o.bool "-a", "--args", "use trailing arguments as fields, even with a tty"
30
30
  o.bool "-e", "--echo", "echo input to tty (only affects interactive input)"
@@ -35,9 +35,11 @@ cmd = CLI.new do
35
35
  string :label
36
36
  list :string, :fields
37
37
  end
38
+
39
+ ensure_session!
38
40
  end
39
41
 
40
- session = CLI.ensure_session cmd.opts[:session]
42
+ session = Session.new label: cmd.opts[:session]
41
43
 
42
44
  type = cmd.args[:type]
43
45
  label = cmd.args[:label]
data/bin/kbsecret-pass CHANGED
@@ -12,23 +12,25 @@ cmd = CLI.new do
12
12
  Retrieve a login record's password.
13
13
 
14
14
  Usage:
15
- kbsecret pass [--session <name>] [--clipboard] <label>
15
+ kbsecret pass [--session <session>] [--clipboard] <record>
16
16
 
17
17
  Examples:
18
18
  kbsecret pass gmail | xclip
19
19
  kbsecret pass --clipboard gmail
20
20
  EOS
21
21
 
22
- o.string "-s", "--session", "the session name", default: :default
22
+ o.string "-s", "--session", "the session to search in", default: :default
23
23
  o.bool "-c", "--clipboard", "dump the password in the clipboard"
24
24
  end
25
25
 
26
26
  dreck do
27
27
  string :label
28
28
  end
29
+
30
+ ensure_session!
29
31
  end
30
32
 
31
- session = CLI.ensure_session cmd.opts[:session]
33
+ session = Session.new label: cmd.opts[:session]
32
34
  label = cmd.args[:label]
33
35
  record = session[label]
34
36
 
@@ -11,21 +11,23 @@ cmd = CLI.new do
11
11
  Edit the raw JSON of a record in $EDITOR.
12
12
 
13
13
  Usage:
14
- kbsecret raw-edit [--session <name>] <label>
14
+ kbsecret raw-edit [--session <session>] <record>
15
15
 
16
16
  Examples:
17
17
  kbsecret raw-edit gmail
18
18
  EOS
19
19
 
20
- o.string "-s", "--session", "the session name", default: :default
20
+ o.string "-s", "--session", "the session to search in", default: :default
21
21
  end
22
22
 
23
23
  dreck do
24
24
  string :label
25
25
  end
26
+
27
+ ensure_session!
26
28
  end
27
29
 
28
- session = CLI.ensure_session cmd.opts[:session]
30
+ session = Session.new label: cmd.opts[:session]
29
31
  label = cmd.args[:label]
30
32
  record = session[label]
31
33
 
data/bin/kbsecret-rm CHANGED
@@ -14,22 +14,23 @@ cmd = CLI.new do
14
14
  Delete a record.
15
15
 
16
16
  Usage:
17
- kbsecret rm [--session <name>] [--interactive] <label>
17
+ kbsecret rm [--session <session>] [--interactive] <record>
18
18
  EOS
19
19
 
20
- o.string "-s", "--session", "the session name", default: :default
20
+ o.string "-s", "--session", "the session containing the record", default: :default
21
21
  o.bool "-i", "--interactive", "ask for confirmation before deleting"
22
22
  end
23
23
 
24
24
  dreck do
25
25
  string :label
26
26
  end
27
+
28
+ ensure_session!
27
29
  end
28
30
 
29
31
  label = cmd.args[:label]
30
- session = CLI.ensure_session cmd.opts[:session]
32
+ session = Session.new label: cmd.opts[:session]
31
33
 
32
- CLI.die "I need the label of a record to delete." unless label
33
34
  CLI.die "I can't delete a nonexistent record." unless session.record? label
34
35
 
35
36
  tty = TTY::Prompt.new
@@ -11,7 +11,7 @@ cmd = CLI.new do
11
11
  Deconfigure (and optionally delete) a session.
12
12
 
13
13
  Usage:
14
- kbsecret rm-session --delete <label>
14
+ kbsecret rm-session [--delete] <session>
15
15
 
16
16
  Example:
17
17
  kbsecret rm-session old-keys
@@ -22,13 +22,15 @@ cmd = CLI.new do
22
22
  end
23
23
 
24
24
  dreck do
25
- string :label
25
+ string :session
26
26
  end
27
+
28
+ ensure_session! :argument
27
29
  end
28
30
 
29
- label = cmd.args[:label]
31
+ label = cmd.args[:session]
30
32
 
31
- session = CLI.ensure_session label
33
+ session = Session.new label: label
32
34
  session.unlink! if cmd.opts.delete?
33
35
 
34
36
  Config.deconfigure_session label
@@ -11,23 +11,25 @@ cmd = CLI.new do
11
11
  Stash the given file (or stdin) as an unstructured record.
12
12
 
13
13
  Usage:
14
- kbsecret stash-file <label> [file]
14
+ kbsecret stash-file <record> [file]
15
15
 
16
16
  Example:
17
17
  kbsecret stash-file foo ~/foo
18
18
  echo "using stdin" | kbsecret stash-file from-stdin
19
19
  EOS
20
20
 
21
- o.string "-s", "--session", "the session name", default: :default
21
+ o.string "-s", "--session", "the session to add to", default: :default
22
22
  end
23
23
 
24
24
  dreck errors: false do
25
25
  string :label
26
26
  string :filename
27
27
  end
28
+
29
+ ensure_session!
28
30
  end
29
31
 
30
- session = CLI.ensure_session cmd.opts[:session]
32
+ session = Session.new label: cmd.opts[:session]
31
33
  label = cmd.args[:label]
32
34
  filename = cmd.args[:filename]
33
35
 
data/bin/kbsecret-todo CHANGED
@@ -11,7 +11,7 @@ cmd = CLI.new do
11
11
  Manage 'to do' records.
12
12
 
13
13
  Usage:
14
- kbsecret todo <start|suspend|complete> <label>
14
+ kbsecret todo <start|suspend|complete> <record>
15
15
 
16
16
  Examples:
17
17
  kbsecret todo start unit-tests
@@ -19,19 +19,20 @@ cmd = CLI.new do
19
19
  kbsecret todo complete shopping
20
20
  EOS
21
21
 
22
- o.string "-s", "--session", "the session name", default: :default
22
+ o.string "-s", "--session", "the session to search in", default: :default
23
23
  end
24
24
 
25
25
  dreck do
26
26
  string :command
27
27
  string :label
28
28
  end
29
+
30
+ ensure_session!
29
31
  end
30
32
 
31
- session = CLI.ensure_session cmd.opts[:session]
33
+ session = Session.new label: cmd.opts[:session]
32
34
  label = cmd.args[:label]
33
-
34
- todo = session[label]
35
+ todo = session[label]
35
36
 
36
37
  CLI.die "No such record." unless todo
37
38
  CLI.die "'#{todo}' is not a todo record." unless todo.type == :todo
data/lib/kbsecret/cli.rb CHANGED
@@ -17,12 +17,15 @@ module KBSecret
17
17
  # @example
18
18
  # cmd = KBSecret::CLI.new do
19
19
  # slop do |o|
20
+ # o.string "-s", "--session", "session label"
20
21
  # o.bool "-f", "--foo", "whatever"
21
22
  # end
22
23
  #
23
24
  # dreck do
24
25
  # string :name
25
26
  # end
27
+ #
28
+ # ensure_session!
26
29
  # end
27
30
  #
28
31
  # cmd.opts # => Slop::Result
@@ -32,6 +35,8 @@ module KBSecret
32
35
  @opts = nil
33
36
  @args = nil
34
37
  instance_eval(&block)
38
+ rescue => e
39
+ self.class.die e.to_s.capitalize
35
40
  end
36
41
 
37
42
  # Parse options for a kbsecret utility, adding some default options for
@@ -39,7 +44,7 @@ module KBSecret
39
44
  # @param cmds [Array<String>] additional commands to print in `--introspect-flags`
40
45
  # @param errors [Boolean] whether or not to produce Slop errors
41
46
  # @return [Slop::Result] the result of argument parsing
42
- # @note This should be called within the block passed to {initialize}.
47
+ # @note This should be called within the block passed to {#initialize}.
43
48
  def slop(cmds: [], errors: false)
44
49
  @opts = Slop.parse suppress_errors: !errors do |o|
45
50
  yield o
@@ -60,15 +65,28 @@ module KBSecret
60
65
  end
61
66
 
62
67
  # Parse trailing arguments for a kbsecret utility, using the elements remaining
63
- # after options have been removed and interpreted via {slop}.
68
+ # after options have been removed and interpreted via {#slop}.
64
69
  # @param errors [Boolean] whether or not to produce (strict) Dreck errors
65
- # @note *If* {slop} is called, it must be called before this.
70
+ # @note *If* {#slop} is called, it must be called before this.
66
71
  def dreck(errors: true, &block)
67
72
  @args = Dreck.parse @trailing, strict: errors do
68
73
  instance_eval(&block)
69
74
  end
70
- rescue => e
71
- KBSecret::CLI.die "#{e.to_s.capitalize}."
75
+ end
76
+
77
+ # Ensure that a session passed in as an option or argument already exists
78
+ # (i.e., is already configured).
79
+ # @param where [Symbol] Where to look for the session label to test.
80
+ # If `:option` is passed, then the session is expected to be the value of
81
+ # the `--session` option. If `:argument` is passed, then the session is expected
82
+ # to be in the argument list labeled as `:argument` by Dreck.
83
+ # @return [void]
84
+ # @raise [RuntimeError] if the expected session is not configured.
85
+ # @note {#slop} and {#dreck} should be called before this, depending on whether
86
+ # options or arguments are being tested for a valid session.
87
+ def ensure_session!(where = :option)
88
+ label = where == :option ? @opts[:session] : @args[:session]
89
+ raise "Unknown session: '#{label}'." unless Config.session? label
72
90
  end
73
91
 
74
92
  class << self
@@ -85,6 +103,7 @@ module KBSecret
85
103
  # @param sess_label [String, Symbol] the session label to instantiate
86
104
  # @return [void]
87
105
  # @note This method does not return if the given session is not configured!
106
+ # @deprecated Use {#ensure_session!} instead.
88
107
  def ensure_session(sess_label)
89
108
  die "Unknown session: '#{sess_label}'." unless Config.session? sess_label
90
109
 
data/lib/version.rb CHANGED
@@ -2,5 +2,5 @@
2
2
 
3
3
  module KBSecret
4
4
  # kbsecret's current version
5
- VERSION = "0.5.5"
5
+ VERSION = "0.5.6"
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kbsecret
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Woodruff
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-25 00:00:00.000000000 Z
11
+ date: 2017-06-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fpm
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.8.1
19
+ version: '1.8'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.8.1
26
+ version: '1.8'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement