kbsecret 0.4.3 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: aafa31104e34d5e24baa546e26a05fd9cd695054
4
- data.tar.gz: 860ddcb29cdc1d2e0a053d8910af5dd0b7e7cc1a
3
+ metadata.gz: 40118cac4e5abfe1a536fefb044f62266df790b8
4
+ data.tar.gz: 52f20d03e5855f7609c41e51787e530fa01e7f38
5
5
  SHA512:
6
- metadata.gz: 0d58a6e350bd3972be81081ac70b3832e92b51ebb59d0fbe9a50c3bd36720c2e5e4051dd49c3666122fd6598e96b0ad38a4e911e80cd71a5f899217a8f1a78f2
7
- data.tar.gz: b5222b237f8ad4caff0869f431a090e7522ffd882cf600e0731d074c981fed2761709ec47bb9bd6a0969bc26d4f3f4e7f18c4a64c3b3207380c31f879e731c3d
6
+ metadata.gz: 1b920a36a162c11b7b94b925ce495f6246a4645711b987ff5c9629845e881934918fc179cbfdd6d2452d858fc800dedbe220edd4b0723c42271f88c3faeb69b5
7
+ data.tar.gz: 3102a1a4481fdd75a8dfebd4e56543a6fe079b95f5e4405800ff6b3532e0d2e4efb6b151d3c325b55f6edd4d4d1421713452337fe932b617f6a6bf42d12caf8e
data/README.md CHANGED
@@ -40,7 +40,9 @@ Documentation is available on [RubyDoc](http://www.rubydoc.info/gems/kbsecret/).
40
40
 
41
41
  ```bash
42
42
  # create a new login record under the default session
43
- $ kbsecret new login gmail "foo@example.com" "barbazquux"
43
+ $ kbsecret new login gmail
44
+ Username?
45
+ Password?
44
46
 
45
47
  # list all records under the default session
46
48
  $ kbsecret list
@@ -19,7 +19,7 @@ end
19
19
  session = KBSecret::CLI.ensure_session opts[:session]
20
20
 
21
21
  label = opts.args.shift
22
- record = session.records.find { |r| r.label == label }
22
+ record = session[label]
23
23
 
24
24
  KBSecret::CLI.die "No such record." unless record
25
25
 
data/bin/kbsecret-env CHANGED
@@ -22,18 +22,15 @@ end
22
22
 
23
23
  session = KBSecret::CLI.ensure_session opts[:session]
24
24
 
25
- env_records = session.records :environment
26
-
27
- if opts.all?
28
- selected_records = env_records
29
- else
30
- selected_labels = opts.args.uniq
31
-
32
- # instead of complaining about nonexistent records, just ignore them
33
- selected_records = selected_labels.map do |l|
34
- env_records.find { |r| r.label == l }
35
- end.compact
36
- end
25
+ records = session.records :environment
26
+
27
+ selected_records = if opts.all?
28
+ records
29
+ else
30
+ records.select do |record|
31
+ opts.args.include? record.label
32
+ end
33
+ end
37
34
 
38
35
  selected_records.each do |record|
39
36
  if opts.value_only?
data/bin/kbsecret-login CHANGED
@@ -23,18 +23,14 @@ end
23
23
 
24
24
  session = KBSecret::CLI.ensure_session opts[:session]
25
25
 
26
- login_records = session.records :login
27
-
28
- if opts.all?
29
- selected_records = login_records
30
- else
31
- selected_labels = opts.args.uniq
32
-
33
- # instead of complaining about nonexistent records, just ignore them
34
- selected_records = selected_labels.map do |l|
35
- login_records.find { |r| r.label == l }
36
- end.compact
37
- end
26
+ records = session.records :login
27
+ selected_records = if opts.all?
28
+ records
29
+ else
30
+ records.select do |record|
31
+ opts.args.include? record.label
32
+ end
33
+ end
38
34
 
39
35
  selected_records.each do |record|
40
36
  if opts.terse?
data/bin/kbsecret-pass CHANGED
@@ -20,12 +20,12 @@ opts = KBSecret::CLI.slop do |o|
20
20
  o.bool "-c", "--clipboard", "dump the password in the clipboard"
21
21
  end
22
22
 
23
- session = KBSecret::CLI.ensure_session opts[:session]
24
- label = opts.args.shift
25
- login_records = session.records :login
26
- record = login_records.find { |r| r.label == label }
23
+ session = KBSecret::CLI.ensure_session opts[:session]
24
+ label = opts.args.shift
25
+ record = session[label]
27
26
 
28
- KBSecret::CLI.die "No such login record." unless record
27
+ KBSecret::CLI.die "No such record." unless record
28
+ KBSecret::CLI.die "'#{record}' is not a login record." unless record.type == :login
29
29
 
30
30
  if opts.clipboard?
31
31
  Clipboard.copy record.password
@@ -19,7 +19,7 @@ end
19
19
 
20
20
  session = KBSecret::CLI.ensure_session opts[:session]
21
21
  label = opts.args.shift
22
- record = session.records.find { |r| r.label == label }
22
+ record = session[label]
23
23
 
24
24
  KBSecret::CLI.die "No such record." unless record
25
25
 
data/bin/kbsecret-todo CHANGED
@@ -24,10 +24,10 @@ command, label = opts.args.shift 2
24
24
 
25
25
  KBSecret::CLI.die "Missing subcommand." unless command && label
26
26
 
27
- todo_records = session.records :todo
28
- todo = todo_records.find { |r| r.label == label }
27
+ todo = session[label]
29
28
 
30
- KBSecret::CLI.die("Fatal: No such todo record.") unless todo
29
+ KBSecret::CLI.die "No such record." unless todo
30
+ KBSecret::CLI.die "'#{todo}' is not a todo record." unless todo.type == :todo
31
31
 
32
32
  case command
33
33
  when "start"
data/lib/kbsecret.rb CHANGED
@@ -11,7 +11,7 @@ require_relative "kbsecret/cli"
11
11
  # The primary namespace for kbsecret.
12
12
  module KBSecret
13
13
  # kbsecret's current version
14
- VERSION = "0.4.3"
14
+ VERSION = "0.4.4"
15
15
 
16
16
  # fail very early if the user doesn't have keybase and KBFS running
17
17
  raise Keybase::KeybaseNotRunningError unless Keybase.running?
@@ -14,7 +14,7 @@ module KBSecret
14
14
  # @return [Integer] the UNIX timestamp marking the record's last modification
15
15
  attr_reader :timestamp
16
16
 
17
- # @return [Symbol] the record's label
17
+ # @return [String] the record's label
18
18
  attr_reader :label
19
19
 
20
20
  # @return [Symbol] the record's type
@@ -86,12 +86,12 @@ module KBSecret
86
86
 
87
87
  # Create a brand new record, associated with a session.
88
88
  # @param session [Session] the session to associate with
89
- # @param label [Symbol] the new record's label
89
+ # @param label [String, Symbol] the new record's label
90
90
  # @note Creation does *not* sync the new record; see {#sync!} for that.
91
91
  def initialize(session, label)
92
92
  @session = session
93
93
  @timestamp = Time.now.to_i
94
- @label = label
94
+ @label = label.to_s
95
95
  @type = self.class.type
96
96
  @data = {}
97
97
  @path = File.join(session.directory, "#{label}.json")
@@ -109,6 +109,12 @@ module KBSecret
109
109
  @path = File.join(session.directory, "#{label}.json")
110
110
  end
111
111
 
112
+ # Create a string representation of the current record.
113
+ # @return [String] the string representation
114
+ def to_s
115
+ @label
116
+ end
117
+
112
118
  # Create a hash-representation of the current record.
113
119
  # @return [Hash] the hash-representation
114
120
  def to_h
@@ -28,6 +28,13 @@ module KBSecret
28
28
  @records = load_records!
29
29
  end
30
30
 
31
+ # @param label [String, Symbol] the label of the record to fetch
32
+ # @return [Record::Abstract, nil] the record with the requested label, if extant
33
+ def [](label)
34
+ @records.find { |r| r.label == label.to_s }
35
+ end
36
+
37
+ # All records (of a given type) in the session.
31
38
  # @param type [String, Symbol] the type of the records to return (or `nil` for all)
32
39
  # @return [Array<Record::Abstract>] records associated with the session
33
40
  def records(type = nil)
@@ -38,16 +45,16 @@ module KBSecret
38
45
  end
39
46
  end
40
47
 
41
- # @return [Array<Symbol>] the labels of all records known to the session
48
+ # @return [Array<String>] the labels of all records known to the session
42
49
  # @example
43
- # session.record_labels # => [:website1, :apikey1, :website2]
50
+ # session.record_labels # => ["website1", "apikey1", "website2"]
44
51
  def record_labels
45
52
  records.map(&:label)
46
53
  end
47
54
 
48
55
  # Add a record to the session.
49
56
  # @param type [String, Symbol] the type of record (see {Record.record_types})
50
- # @param label [Symbol] the new record's label
57
+ # @param label [String, Symbol] the new record's label
51
58
  # @param args [Array<String>] the record-type specific arguments
52
59
  # @return [void]
53
60
  # @raise UnknownRecordTypeError if the requested type does not exist
@@ -61,27 +68,28 @@ module KBSecret
61
68
  arity = klass.instance_method(:initialize).arity - 2
62
69
  raise RecordCreationArityError.new(arity, args.size) unless arity == args.size
63
70
 
64
- record = klass.new(self, label, *args)
71
+ record = klass.new(self, label.to_s, *args)
65
72
  records << record
66
73
  record.sync!
67
74
  end
68
75
 
69
76
  # Delete a record from the session, if it exists. Does nothing if
70
77
  # no such record can be found.
71
- # @param rec_label [Symbol] the label of the record to delete
78
+ # @param label [String, Symbol] the label of the record to delete
72
79
  # @return [void]
73
- def delete_record(rec_label)
74
- record = records.find { |r| r.label == rec_label }
80
+ def delete_record(label)
81
+ record = records.find { |r| r.label == label.to_s }
75
82
  return unless record
76
83
 
77
84
  File.delete(record.path)
78
85
  records.delete(record)
79
86
  end
80
87
 
88
+ # @param label [String, Symbol] the label to test for
81
89
  # @return [Boolean] whether or not the session contains a record with the
82
90
  # given label
83
91
  def record?(label)
84
- record_labels.include?(label)
92
+ record_labels.include?(label.to_s)
85
93
  end
86
94
 
87
95
  # Delete the entire session.
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.3
4
+ version: 0.4.4
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-06-15 00:00:00.000000000 Z
11
+ date: 2017-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: clipboard