kbsecret 0.6.1 → 0.6.2
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 +4 -4
- data/bin/kbsecret-dump-fields +2 -3
- data/bin/kbsecret-env +3 -2
- data/bin/kbsecret-list +1 -3
- data/bin/kbsecret-login +3 -2
- data/bin/kbsecret-new +4 -6
- data/bin/kbsecret-new-session +1 -1
- data/bin/kbsecret-pass +3 -4
- data/bin/kbsecret-raw-edit +2 -3
- data/bin/kbsecret-rm +4 -5
- data/bin/kbsecret-rm-session +1 -2
- data/bin/kbsecret-sessions +1 -1
- data/bin/kbsecret-stash-file +3 -4
- data/bin/kbsecret-todo +7 -8
- data/lib/kbsecret/cli.rb +21 -8
- data/lib/kbsecret/exceptions.rb +8 -0
- data/lib/kbsecret/record.rb +2 -0
- 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: d8b8f4651e863a5f86291010e03b05ce5755f1c2
|
4
|
+
data.tar.gz: d8c56ff9124e244f352e3fe02101ac7e85c62314
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 23ddcab27f3bce089b8905a147d85ec5e8abfa053f157a02ef08eb21413e021aa3d7a66fbe678a21efc45240b979820a2a6fc09ecf6bd6ec61ebcdaa9745c2be
|
7
|
+
data.tar.gz: da1bbc994c6e861e8f3a5f9092c5dab9541b2029d4b6306b11d3c4c84bbbc7facf2046eb03e6fd6fb67658e94e9ef6c66e1ed2a0b21b3d245e0dc9c918f8d8b0
|
data/bin/kbsecret-dump-fields
CHANGED
@@ -24,11 +24,10 @@ cmd = CLI.new do
|
|
24
24
|
ensure_session!
|
25
25
|
end
|
26
26
|
|
27
|
-
session = Session.new label: cmd.opts[:session]
|
28
27
|
label = cmd.args[:label]
|
29
|
-
record = session[label]
|
28
|
+
record = cmd.session[label]
|
30
29
|
|
31
|
-
|
30
|
+
cmd.die "No such record." unless record
|
32
31
|
|
33
32
|
field_values = record.class.data_fields.map { |f| record.send f }
|
34
33
|
field_pairs = record.class.data_fields.zip(field_values)
|
data/bin/kbsecret-env
CHANGED
@@ -24,8 +24,7 @@ cmd = CLI.new do
|
|
24
24
|
ensure_session!
|
25
25
|
end
|
26
26
|
|
27
|
-
|
28
|
-
records = session.records :environment
|
27
|
+
records = cmd.session.records :environment
|
29
28
|
|
30
29
|
selected_records = if cmd.opts.all?
|
31
30
|
records
|
@@ -35,6 +34,8 @@ selected_records = if cmd.opts.all?
|
|
35
34
|
end
|
36
35
|
end
|
37
36
|
|
37
|
+
cmd.warn "No records selected." if selected_records.empty?
|
38
|
+
|
38
39
|
selected_records.each do |record|
|
39
40
|
if cmd.opts.value_only?
|
40
41
|
puts record.value
|
data/bin/kbsecret-list
CHANGED
data/bin/kbsecret-login
CHANGED
@@ -25,8 +25,7 @@ cmd = CLI.new do
|
|
25
25
|
ensure_session!
|
26
26
|
end
|
27
27
|
|
28
|
-
|
29
|
-
records = session.records :login
|
28
|
+
records = cmd.session.records :login
|
30
29
|
|
31
30
|
selected_records = if cmd.opts.all?
|
32
31
|
records
|
@@ -36,6 +35,8 @@ selected_records = if cmd.opts.all?
|
|
36
35
|
end
|
37
36
|
end
|
38
37
|
|
38
|
+
cmd.warn "No records selected." if selected_records.empty?
|
39
|
+
|
39
40
|
selected_records.each do |record|
|
40
41
|
if cmd.opts.terse?
|
41
42
|
fields = %i[label username password].map { |m| record.send(m) }
|
data/bin/kbsecret-new
CHANGED
@@ -33,14 +33,12 @@ cmd = CLI.new do
|
|
33
33
|
ensure_session!
|
34
34
|
end
|
35
35
|
|
36
|
-
session = Session.new label: cmd.opts[:session]
|
37
|
-
|
38
36
|
type = cmd.args[:type]
|
39
37
|
label = cmd.args[:label]
|
40
38
|
resolved_type = TYPE_ALIASES[type]
|
41
39
|
|
42
|
-
if session.record?(label) && !cmd.opts.force?
|
43
|
-
|
40
|
+
if cmd.session.record?(label) && !cmd.opts.force?
|
41
|
+
cmd.die "Refusing to overwrite an existing record without --force."
|
44
42
|
end
|
45
43
|
|
46
44
|
fields = if $stdin.tty? && !cmd.opts.args?
|
@@ -55,7 +53,7 @@ fields = if $stdin.tty? && !cmd.opts.args?
|
|
55
53
|
end
|
56
54
|
|
57
55
|
begin
|
58
|
-
session.add_record(resolved_type, label, *fields)
|
56
|
+
cmd.session.add_record(resolved_type, label, *fields)
|
59
57
|
rescue => e
|
60
|
-
|
58
|
+
cmd.die "#{e}."
|
61
59
|
end
|
data/bin/kbsecret-new-session
CHANGED
@@ -23,7 +23,7 @@ end
|
|
23
23
|
session_label = cmd.opts[:label]
|
24
24
|
|
25
25
|
if Config.session?(session_label) && !cmd.opts.force?
|
26
|
-
|
26
|
+
cmd.die "Refusing to overwrite an existing session without --force."
|
27
27
|
end
|
28
28
|
|
29
29
|
session_hash = {
|
data/bin/kbsecret-pass
CHANGED
@@ -24,12 +24,11 @@ cmd = CLI.new do
|
|
24
24
|
ensure_session!
|
25
25
|
end
|
26
26
|
|
27
|
-
session = Session.new label: cmd.opts[:session]
|
28
27
|
label = cmd.args[:label]
|
29
|
-
record = session[label]
|
28
|
+
record = cmd.session[label]
|
30
29
|
|
31
|
-
|
32
|
-
|
30
|
+
cmd.die "No such record." unless record
|
31
|
+
cmd.die "'#{record}' is not a login record." unless record.type == :login
|
33
32
|
|
34
33
|
if cmd.opts.clipboard?
|
35
34
|
Clipboard.copy record.password
|
data/bin/kbsecret-raw-edit
CHANGED
@@ -22,11 +22,10 @@ cmd = CLI.new do
|
|
22
22
|
ensure_session!
|
23
23
|
end
|
24
24
|
|
25
|
-
session = Session.new label: cmd.opts[:session]
|
26
25
|
label = cmd.args[:label]
|
27
|
-
record = session[label]
|
26
|
+
record = cmd.session[label]
|
28
27
|
|
29
|
-
|
28
|
+
cmd.die "No such record." unless record
|
30
29
|
|
31
30
|
Process.spawn("#{ENV["EDITOR"]} #{record.path}")
|
32
31
|
record.sync! # just to bump the timestamp
|
data/bin/kbsecret-rm
CHANGED
@@ -26,16 +26,15 @@ cmd = CLI.new do
|
|
26
26
|
ensure_session!
|
27
27
|
end
|
28
28
|
|
29
|
-
label
|
30
|
-
session = Session.new label: cmd.opts[:session]
|
29
|
+
label = cmd.args[:label]
|
31
30
|
|
32
|
-
|
31
|
+
cmd.die "Can't delete a nonexistent record." unless cmd.session.record? label
|
33
32
|
|
34
33
|
tty = TTY::Prompt.new
|
35
34
|
|
36
35
|
confirm = if cmd.opts.interactive?
|
37
|
-
tty.yes?("Delete '#{label}' from the #{session.label} session?")
|
36
|
+
tty.yes?("Delete '#{label}' from the #{cmd.session.label} session?")
|
38
37
|
else true
|
39
38
|
end
|
40
39
|
|
41
|
-
session.delete_record(label) if confirm
|
40
|
+
cmd.session.delete_record(label) if confirm
|
data/bin/kbsecret-rm-session
CHANGED
data/bin/kbsecret-sessions
CHANGED
data/bin/kbsecret-stash-file
CHANGED
@@ -23,18 +23,17 @@ cmd = CLI.new do
|
|
23
23
|
ensure_session!
|
24
24
|
end
|
25
25
|
|
26
|
-
session = Session.new label: cmd.opts[:session]
|
27
26
|
label = cmd.args[:label]
|
28
27
|
filename = cmd.args[:filename]
|
29
28
|
|
30
|
-
|
29
|
+
cmd.die "Missing a record label to create." unless label
|
31
30
|
|
32
31
|
contents = if filename.empty? || filename == "-"
|
33
32
|
STDIN.read
|
34
33
|
elsif File.file?(filename)
|
35
34
|
File.read(filename)
|
36
35
|
else
|
37
|
-
|
36
|
+
cmd.die "That file doesn't exist."
|
38
37
|
end
|
39
38
|
|
40
|
-
session.add_record(:unstructured, label, contents)
|
39
|
+
cmd.session.add_record(:unstructured, label, contents)
|
data/bin/kbsecret-todo
CHANGED
@@ -23,26 +23,25 @@ cmd = CLI.new do
|
|
23
23
|
ensure_session!
|
24
24
|
end
|
25
25
|
|
26
|
-
session = Session.new label: cmd.opts[:session]
|
27
26
|
label = cmd.args[:label]
|
28
|
-
todo = session[label]
|
27
|
+
todo = cmd.session[label]
|
29
28
|
|
30
|
-
|
31
|
-
|
29
|
+
cmd.die "No such record." unless todo
|
30
|
+
cmd.die "'#{todo}' is not a todo record." unless todo.type == :todo
|
32
31
|
|
33
32
|
case cmd.args[:command]
|
34
33
|
when "start"
|
35
|
-
|
34
|
+
cmd.die "That task is already started!" if todo.started?
|
36
35
|
todo.start!
|
37
36
|
puts "#{todo.label}: '#{todo.todo}' marked as started at #{todo.start}"
|
38
37
|
when "suspend"
|
39
|
-
|
38
|
+
cmd.die "That task is already suspended!" if todo.suspended?
|
40
39
|
todo.suspend!
|
41
40
|
puts "#{todo.label}: '#{todo.todo}' marked as suspended at #{todo.stop}"
|
42
41
|
when "complete"
|
43
|
-
|
42
|
+
cmd.die "That task is already completed!" if todo.completed?
|
44
43
|
todo.complete!
|
45
44
|
puts "#{todo.label}: '#{todo.todo}' marked as completed at #{todo.stop}"
|
46
45
|
else
|
47
|
-
|
46
|
+
cmd.die "Unknown action: #{command}."
|
48
47
|
end
|
data/lib/kbsecret/cli.rb
CHANGED
@@ -7,12 +7,18 @@ require "dreck"
|
|
7
7
|
module KBSecret
|
8
8
|
# An encapsulation of useful methods for kbsecret's CLI.
|
9
9
|
class CLI
|
10
|
-
# @return [Slop::Result] the result of option parsing
|
10
|
+
# @return [Slop::Result, nil] the result of option parsing, if requested
|
11
|
+
# via {#slop}
|
11
12
|
attr_reader :opts
|
12
13
|
|
13
|
-
# @return [Dreck::Result] the result of trailing argument parsing
|
14
|
+
# @return [Dreck::Result, nil] the result of trailing argument parsing, if
|
15
|
+
# requested via {#dreck}
|
14
16
|
attr_reader :args
|
15
17
|
|
18
|
+
# @return [Session, nil] the session associated with the command, if requested
|
19
|
+
# via {#ensure_session!}
|
20
|
+
attr_reader :session
|
21
|
+
|
16
22
|
# Encapsulate both the options and trailing arguments passed to a `kbsecret` command.
|
17
23
|
# @example
|
18
24
|
# cmd = KBSecret::CLI.new do
|
@@ -32,11 +38,7 @@ module KBSecret
|
|
32
38
|
# cmd.args # => Dreck::Result
|
33
39
|
def initialize(&block)
|
34
40
|
@trailing = ARGV
|
35
|
-
|
36
|
-
@args = nil
|
37
|
-
instance_eval(&block)
|
38
|
-
rescue => e
|
39
|
-
self.class.die "#{e.to_s.capitalize}."
|
41
|
+
guard { instance_eval(&block) }
|
40
42
|
end
|
41
43
|
|
42
44
|
# Parse options for a kbsecret utility, adding some default options for
|
@@ -92,6 +94,18 @@ module KBSecret
|
|
92
94
|
def ensure_session!(where = :option)
|
93
95
|
label = where == :option ? @opts[:session] : @args[:session]
|
94
96
|
raise "Unknown session: '#{label}'" unless Config.session? label
|
97
|
+
@session = Session.new label: label
|
98
|
+
end
|
99
|
+
|
100
|
+
# "Guard" a block by propagating any exceptions as fatal (unrecoverable)
|
101
|
+
# errors.
|
102
|
+
# @return [Object] the result of the block
|
103
|
+
# @note This should be used to guard chunks of code that are likely to
|
104
|
+
# raise exceptions. The amount of code guarded should be minimized.
|
105
|
+
def guard
|
106
|
+
yield
|
107
|
+
rescue => e
|
108
|
+
die "#{e.to_s.capitalize}."
|
95
109
|
end
|
96
110
|
|
97
111
|
# Print an informational message if verbose output has been enabled.
|
@@ -124,7 +138,6 @@ module KBSecret
|
|
124
138
|
# @param msg [String] the message to print
|
125
139
|
# @return [void]
|
126
140
|
# @note This method does not return!
|
127
|
-
# @deprecated use {#die} instead.
|
128
141
|
def die(msg)
|
129
142
|
pretty = "#{"Fatal".red}: #{msg}"
|
130
143
|
abort pretty
|
data/lib/kbsecret/exceptions.rb
CHANGED
@@ -5,6 +5,14 @@ module KBSecret
|
|
5
5
|
class KBSecretError < RuntimeError
|
6
6
|
end
|
7
7
|
|
8
|
+
# Raised during record loading if a particular file can't be loaded
|
9
|
+
class RecordLoadError < KBSecretError
|
10
|
+
def initialize(path)
|
11
|
+
base = File.basename(path)
|
12
|
+
super "Failed to load record in file: #{base}"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
8
16
|
# Raised during record creation if an unknown record type is requested.
|
9
17
|
class RecordTypeUnknownError < KBSecretError
|
10
18
|
def initialize(type)
|
data/lib/kbsecret/record.rb
CHANGED
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.2
|
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-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fpm
|