kbsecret 1.7.0 → 1.7.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7c993c9978aea77d7df6e4236438dce5bcaa6a9fe2c78e4eb4979e0f3307e0cc
4
- data.tar.gz: effd152077dad6681f107ae9512edf0fc4cb9d08298355cce82bf83ce5dc27a6
3
+ metadata.gz: 4ff3ce4b84d20568268d1bdc3562e53d879d9bf43aab3a4dd02e230d90e78c55
4
+ data.tar.gz: 2377ec56804df5e5540eb844ccf4817b3d24f49340c88a085a4d16797d9bfdc8
5
5
  SHA512:
6
- metadata.gz: 5be64482fc4c9829a620e17ca3b3a291b53c1da1130d037dbfc461f17c7febcfa2453e8fe3c84d3f272321f1f29972f9314523e0549f67d1d4acfc78daaa50bf
7
- data.tar.gz: ee98985017baf86addd6be93b285703324e73b37a14183554beb50ac2604b9b8c59b653fa527ad66af314bf0bb0802b4951ba90591dd66ebe6da5c362f96712c
6
+ metadata.gz: 1b04426b4e02c57329ce063bf8fa8268174e613d155c7f0903711d3fd4e4ad4c8b450ec19cd745090f9ee91fc771739cca97897da703bf6191d1dbaf4bc0a1de
7
+ data.tar.gz: a7143a0f3c43c859db26909bb0701ef8caf2ebe025642f829e006249e70ec48359ebf13137d507b1d9aad3b6f1e02931fa4227407d4a77681e7ca2a608f59574
@@ -60,13 +60,12 @@ module KBSecret
60
60
  fields = if cli.opts.terse?
61
61
  CLI.stdin.read.chomp.split cli.opts[:ifs]
62
62
  else
63
- prompt = TTY::Prompt.new
64
63
  klass = Record.class_for(@type)
65
64
  klass.external_fields.map do |field|
66
65
  if cli.opts.generate? && klass.sensitive?(field)
67
66
  generator.secret
68
67
  else
69
- prompt.ask "#{field.capitalize}?",
68
+ cli.prompt "#{field.capitalize}?",
70
69
  echo: !klass.sensitive?(field) || cli.opts.echo?
71
70
  end
72
71
  end
data/lib/kbsecret/cli.rb CHANGED
@@ -6,6 +6,7 @@ require "slop"
6
6
  require "dreck"
7
7
  require "abbrev"
8
8
  require "pastel"
9
+ require "termios"
9
10
 
10
11
  module KBSecret
11
12
  # An encapsulation of useful methods for kbsecret's CLI.
@@ -155,6 +156,28 @@ module KBSecret
155
156
  die "#{e.to_s.capitalize}."
156
157
  end
157
158
 
159
+ # Prompt the user for some input.
160
+ # @param question [String] the question to ask the user
161
+ # @param echo [Boolean] whether or not to echo the user's input
162
+ # @return [String] the user's response, with trailing newline removed
163
+ def prompt(question, echo: true)
164
+ if self.class.stdin.tty?
165
+ old_attrs = Termios.tcgetattr(self.class.stdin)
166
+ new_attrs = old_attrs.dup
167
+ new_attrs.lflag &= ~Termios::ECHO unless echo
168
+ Termios.tcsetattr(self.class.stdin, Termios::TCSANOW, new_attrs)
169
+ end
170
+
171
+ self.class.stdout.print "#{question} "
172
+ response = self.class.stdin.gets.chomp
173
+ response
174
+ ensure
175
+ if self.class.stdin.tty?
176
+ self.class.stdout.puts unless echo
177
+ Termios.tcsetattr(self.class.stdin, Termios::TCSANOW, old_attrs)
178
+ end
179
+ end
180
+
158
181
  # Print an informational message.
159
182
  # @param msg [String] the message to print
160
183
  # @return [void]
@@ -2,5 +2,5 @@
2
2
 
3
3
  module KBSecret
4
4
  # kbsecret's current version
5
- VERSION = "1.7.0"
5
+ VERSION = "1.7.1"
6
6
  end
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: 1.7.0
4
+ version: 1.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Woodruff
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-04 00:00:00.000000000 Z
11
+ date: 2018-05-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -170,6 +170,20 @@ dependencies:
170
170
  - - "~>"
171
171
  - !ruby/object:Gem::Version
172
172
  version: '0.7'
173
+ - !ruby/object:Gem::Dependency
174
+ name: ruby-termios
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: '1.0'
180
+ type: :runtime
181
+ prerelease: false
182
+ version_requirements: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: '1.0'
173
187
  - !ruby/object:Gem::Dependency
174
188
  name: slop
175
189
  requirement: !ruby/object:Gem::Requirement