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