kbsecret 0.6.1 → 0.6.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|