kbsecret 0.5.5 → 0.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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