kbsecret 0.5.6 → 0.6.0
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-new +2 -1
- data/lib/kbsecret/record/abstract.rb +26 -7
- data/lib/kbsecret/record/environment.rb +1 -1
- data/lib/kbsecret/record/login.rb +1 -1
- data/lib/kbsecret/record/snippet.rb +2 -2
- data/lib/kbsecret/record/todo.rb +4 -4
- data/lib/kbsecret/record/unstructured.rb +1 -1
- data/lib/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 04bf388d61371a29a5f721a4a39a03037fbd674c
|
4
|
+
data.tar.gz: 4bc34dd530c79ecb34816c0013a36c47ecb969e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6933f6c00c8ced6ebec24956790109f0238324e69194637fe7cabbb8be7cdac21e5de9732eba3c043f8cbc92d93def83195682013c1d019aca497423a04ff44a
|
7
|
+
data.tar.gz: 3fbd02c35aaf1531b0365e7475ab3047c6b07ac442bd83f195d656b613fae4d1a3f8e4d450ce1d770312c59a61fc4518f4e3e084f60ac425c0105ce02f071ed4
|
data/bin/kbsecret-new
CHANGED
@@ -53,7 +53,8 @@ fields = if $stdin.tty? && !cmd.opts.args?
|
|
53
53
|
prompt = TTY::Prompt.new
|
54
54
|
klass = Record.class_for(resolved_type)
|
55
55
|
klass.data_fields.map do |field|
|
56
|
-
prompt.ask
|
56
|
+
prompt.ask "#{field.capitalize}?",
|
57
|
+
echo: !klass.sensitive?(field) || cmd.opts.echo?
|
57
58
|
end
|
58
59
|
else
|
59
60
|
cmd.args[:fields]
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "json"
|
4
|
+
require "forwardable"
|
4
5
|
|
5
6
|
module KBSecret
|
6
7
|
module Record
|
@@ -8,6 +9,8 @@ module KBSecret
|
|
8
9
|
# more useful records.
|
9
10
|
# @abstract
|
10
11
|
class Abstract
|
12
|
+
extend Forwardable
|
13
|
+
|
11
14
|
# @return [Session] the session associated with the record
|
12
15
|
attr_accessor :session
|
13
16
|
|
@@ -29,10 +32,14 @@ module KBSecret
|
|
29
32
|
class << self
|
30
33
|
# Add a field to the record's data.
|
31
34
|
# @param field [Symbol] the new field's name
|
35
|
+
# @param sensitive [Boolean] whether the field is sensitive (e.g., a password)
|
32
36
|
# @return [void]
|
33
|
-
def data_field(field)
|
34
|
-
@fields
|
37
|
+
def data_field(field, sensitive: true)
|
38
|
+
@fields ||= []
|
39
|
+
@sensitive ||= {}
|
40
|
+
|
35
41
|
@fields << field
|
42
|
+
@sensitive[field] = sensitive
|
36
43
|
|
37
44
|
gen_methods field
|
38
45
|
end
|
@@ -54,6 +61,12 @@ module KBSecret
|
|
54
61
|
]
|
55
62
|
end
|
56
63
|
|
64
|
+
# @param field [Symbol] the field's name
|
65
|
+
# @return [Boolean] whether the field is sensitive
|
66
|
+
def sensitive?(field)
|
67
|
+
!!@sensitive[field]
|
68
|
+
end
|
69
|
+
|
57
70
|
# @return [Array<Symbol>] all data fields for the record class
|
58
71
|
def data_fields
|
59
72
|
@fields
|
@@ -63,11 +76,11 @@ module KBSecret
|
|
63
76
|
# @example
|
64
77
|
# KBSecret::Record::Abstract.type # => :abstract
|
65
78
|
def type
|
66
|
-
name.split("::")
|
67
|
-
.last
|
68
|
-
.gsub(/([^A-Z])([A-Z]+)/, '\1_\2')
|
69
|
-
.downcase
|
70
|
-
.to_sym
|
79
|
+
name.split("::")
|
80
|
+
.last
|
81
|
+
.gsub(/([^A-Z])([A-Z]+)/, '\1_\2')
|
82
|
+
.downcase
|
83
|
+
.to_sym
|
71
84
|
end
|
72
85
|
|
73
86
|
# Load the given hash-representation into a record.
|
@@ -109,6 +122,12 @@ module KBSecret
|
|
109
122
|
@path = File.join(session.directory, "#{label}.json")
|
110
123
|
end
|
111
124
|
|
125
|
+
# @!method data_fields
|
126
|
+
# @return (see KBSecret::Record::Abstract.data_fields)
|
127
|
+
# @!method sensitive?
|
128
|
+
# @return (see KBSecret::Record::Abstract.sensitive?)
|
129
|
+
def_delegators :"self.class", :data_fields, :sensitive?
|
130
|
+
|
112
131
|
# Create a string representation of the current record.
|
113
132
|
# @return [String] the string representation
|
114
133
|
def to_s
|
@@ -6,7 +6,7 @@ module KBSecret
|
|
6
6
|
module Record
|
7
7
|
# Represents a record containing an environment variable and value.
|
8
8
|
class Environment < Abstract
|
9
|
-
data_field :variable
|
9
|
+
data_field :variable, sensitive: false
|
10
10
|
data_field :value
|
11
11
|
|
12
12
|
# @param session [Session] the session to associate with
|
@@ -4,7 +4,7 @@ module KBSecret
|
|
4
4
|
module Record
|
5
5
|
# Represents a record containing a login (username, password) pair.
|
6
6
|
class Login < Abstract
|
7
|
-
data_field :username
|
7
|
+
data_field :username, sensitive: false
|
8
8
|
data_field :password
|
9
9
|
|
10
10
|
# @param session [Session] the session to associate with
|
@@ -4,8 +4,8 @@ module KBSecret
|
|
4
4
|
module Record
|
5
5
|
# Represents a record containing a code snippet and its description.
|
6
6
|
class Snippet < Abstract
|
7
|
-
data_field :code
|
8
|
-
data_field :description
|
7
|
+
data_field :code, sensitive: false
|
8
|
+
data_field :description, sensitive: false
|
9
9
|
|
10
10
|
# @param session [Session] the session to associate with
|
11
11
|
# @param label [Symbol] the new record's label
|
data/lib/kbsecret/record/todo.rb
CHANGED
@@ -14,10 +14,10 @@ module KBSecret
|
|
14
14
|
# The stop time is the date and time at which the item was *either*
|
15
15
|
# last suspended via {#suspend!} *or* finished via {#complete!}.
|
16
16
|
class Todo < Abstract
|
17
|
-
data_field :todo
|
18
|
-
data_field :status
|
19
|
-
data_field :start
|
20
|
-
data_field :stop
|
17
|
+
data_field :todo, sensitive: false
|
18
|
+
data_field :status, sensitive: false
|
19
|
+
data_field :start, sensitive: false
|
20
|
+
data_field :stop, sensitive: false
|
21
21
|
|
22
22
|
# @param session [Session] the session to associate with
|
23
23
|
# @param label [Symbol] the new record's label
|
@@ -4,7 +4,7 @@ module KBSecret
|
|
4
4
|
module Record
|
5
5
|
# Represents a record containing unstructured text.
|
6
6
|
class Unstructured < Abstract
|
7
|
-
data_field :text
|
7
|
+
data_field :text, sensitive: false
|
8
8
|
|
9
9
|
# @param session [Session] the session to associate with
|
10
10
|
# @param label [Symbol] the new record's label
|
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.
|
4
|
+
version: 0.6.0
|
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-
|
11
|
+
date: 2017-07-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fpm
|
@@ -100,14 +100,14 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.0.
|
103
|
+
version: 0.0.7
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 0.0.
|
110
|
+
version: 0.0.7
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: keybase-unofficial
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|