kbsecret 0.6.3 → 0.6.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/kbsecret-list +1 -0
- data/bin/kbsecret-new +7 -6
- data/lib/kbsecret/cli.rb +19 -4
- data/lib/kbsecret/exceptions.rb +2 -2
- data/lib/kbsecret/record.rb +6 -2
- data/lib/kbsecret/session.rb +0 -1
- data/lib/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ef3c6ce21470ae9c4b272d68120299f23eaba85d
|
4
|
+
data.tar.gz: 0104f269fbd814723b3b9e482bdedc9636cb0872
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 022ab311dd0bc0d31214fa684f078425fb92fc8c54f8eb47103078655b0678deab27bb49b338691fe416e4b3ab66402f4e4c78cd625684d92c50035b94c396b3
|
7
|
+
data.tar.gz: cf4b0df49500576fdf41d0fbf4c755510925208767670df105c6a1cbefec6fd1f5f3448c3069187be74aa3a92cc22b6582789019fccf07012a57c8f0e683bc43
|
data/bin/kbsecret-list
CHANGED
data/bin/kbsecret-new
CHANGED
@@ -8,10 +8,10 @@ require "tty-prompt"
|
|
8
8
|
include KBSecret
|
9
9
|
|
10
10
|
# allows for abbreviated types (e.g., `kbsecret new env ...`)
|
11
|
-
TYPE_ALIASES = Abbrev.abbrev(Record.record_types).freeze
|
11
|
+
TYPE_ALIASES = Hash.new { |_, k| k }.update(Abbrev.abbrev(Record.record_types)).freeze
|
12
12
|
|
13
|
-
cmd = CLI.
|
14
|
-
slop do |o|
|
13
|
+
cmd = CLI.create do |c|
|
14
|
+
c.slop do |o|
|
15
15
|
o.banner = <<~EOS
|
16
16
|
Usage:
|
17
17
|
kbsecret new [options] <type> <label>
|
@@ -24,13 +24,14 @@ cmd = CLI.new do
|
|
24
24
|
o.bool "-e", "--echo", "echo input to tty (only affects interactive input)"
|
25
25
|
end
|
26
26
|
|
27
|
-
dreck do
|
27
|
+
c.dreck do
|
28
28
|
string :type
|
29
29
|
string :label
|
30
|
-
list :string, :fields
|
30
|
+
list :string, :fields if c.opts.args?
|
31
31
|
end
|
32
32
|
|
33
|
-
|
33
|
+
c.ensure_type! :argument
|
34
|
+
c.ensure_session!
|
34
35
|
end
|
35
36
|
|
36
37
|
type = cmd.args[:type]
|
data/lib/kbsecret/cli.rb
CHANGED
@@ -20,22 +20,32 @@ module KBSecret
|
|
20
20
|
attr_reader :session
|
21
21
|
|
22
22
|
# Encapsulate both the options and trailing arguments passed to a `kbsecret` command.
|
23
|
+
# @yield [CLI] the {CLI} instance to specify
|
24
|
+
# @return [CLI] the command's initial state
|
23
25
|
# @example
|
24
|
-
# cmd = KBSecret::CLI.
|
25
|
-
# slop do |o|
|
26
|
+
# cmd = KBSecret::CLI.create do |c|
|
27
|
+
# c.slop do |o|
|
26
28
|
# o.string "-s", "--session", "session label"
|
27
29
|
# o.bool "-f", "--foo", "whatever"
|
28
30
|
# end
|
29
31
|
#
|
30
|
-
# dreck do
|
32
|
+
# c.dreck do
|
31
33
|
# string :name
|
32
34
|
# end
|
33
35
|
#
|
34
|
-
# ensure_session!
|
36
|
+
# c.ensure_session!
|
35
37
|
# end
|
36
38
|
#
|
37
39
|
# cmd.opts # => Slop::Result
|
38
40
|
# cmd.args # => Dreck::Result
|
41
|
+
def self.create(&block)
|
42
|
+
cmd = CLI.new(&block)
|
43
|
+
yield cmd
|
44
|
+
cmd
|
45
|
+
end
|
46
|
+
|
47
|
+
# @api private
|
48
|
+
# @deprecated see {create}
|
39
49
|
def initialize(&block)
|
40
50
|
@trailing = ARGV
|
41
51
|
guard { instance_eval(&block) }
|
@@ -97,6 +107,11 @@ module KBSecret
|
|
97
107
|
@session = Session.new label: label
|
98
108
|
end
|
99
109
|
|
110
|
+
def ensure_type!(where = :option)
|
111
|
+
type = where == :option ? @opts[:type] : @args[:type]
|
112
|
+
Record.class_for type
|
113
|
+
end
|
114
|
+
|
100
115
|
# "Guard" a block by propagating any exceptions as fatal (unrecoverable)
|
101
116
|
# errors.
|
102
117
|
# @return [Object] the result of the block
|
data/lib/kbsecret/exceptions.rb
CHANGED
@@ -9,14 +9,14 @@ module KBSecret
|
|
9
9
|
class RecordLoadError < KBSecretError
|
10
10
|
def initialize(path)
|
11
11
|
base = File.basename(path)
|
12
|
-
super "Failed to load record in file: #{base}"
|
12
|
+
super "Failed to load record in file: '#{base}'"
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
16
|
# Raised during record creation if an unknown record type is requested.
|
17
17
|
class RecordTypeUnknownError < KBSecretError
|
18
18
|
def initialize(type)
|
19
|
-
super "Unknown record type: #{type}"
|
19
|
+
super "Unknown record type: '#{type}'"
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
data/lib/kbsecret/record.rb
CHANGED
@@ -23,9 +23,12 @@ module KBSecret
|
|
23
23
|
end
|
24
24
|
|
25
25
|
# @param type [String, Symbol] the record type
|
26
|
-
# @return [Class
|
26
|
+
# @return [Class] the record class corresponding to the given type
|
27
|
+
# @raise [RecordTypeUnknownError] if the requested type is unknown
|
27
28
|
def self.class_for(type)
|
28
|
-
record_classes.find { |c| c.type == type.to_sym }
|
29
|
+
klass = record_classes.find { |c| c.type == type.to_sym }
|
30
|
+
raise RecordTypeUnknownError, type unless klass
|
31
|
+
klass
|
29
32
|
end
|
30
33
|
|
31
34
|
# @param type [String, Symbol] the record type
|
@@ -39,6 +42,7 @@ module KBSecret
|
|
39
42
|
# @param session [Session] the session to load into
|
40
43
|
# @param path [String] the fully-qualified record path
|
41
44
|
# @return [Record::AbstractRecord] the loaded record
|
45
|
+
# @raise [RecordLoadError] if an error occurs during record loading
|
42
46
|
# @api private
|
43
47
|
def self.load_record!(session, path)
|
44
48
|
hsh = JSON.parse(File.read(path), symbolize_names: true)
|
data/lib/kbsecret/session.rb
CHANGED
@@ -63,7 +63,6 @@ module KBSecret
|
|
63
63
|
# arguments does not match the record type's constructor
|
64
64
|
def add_record(type, label, *args)
|
65
65
|
klass = Record.class_for(type.to_sym)
|
66
|
-
raise RecordTypeUnknownError, type unless klass
|
67
66
|
|
68
67
|
arity = klass.instance_method(:initialize).arity - 2
|
69
68
|
raise RecordCreationArityError.new(arity, args.size) unless arity == args.size
|
data/lib/version.rb
CHANGED
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.6.
|
4
|
+
version: 0.6.4
|
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-07-
|
11
|
+
date: 2017-07-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fpm
|