kbsecret 0.8.0.pre.3 → 0.8.0.pre.4

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
  SHA1:
3
- metadata.gz: aae74433c2aa507fc6a9f55e2d777edd2d5125e3
4
- data.tar.gz: 79bcab87842e27110f9e5f2f60bd98da2ba19663
3
+ metadata.gz: 41fdcf73292b783109fc320d519927b865d3d699
4
+ data.tar.gz: dbfe082cfbe08760603e9f31c7e9b3c7588581f2
5
5
  SHA512:
6
- metadata.gz: c905f9e6c288864710dc8fbd2a89ec75e70179f8b08cdce9093847c3ad951784aa5382ffd35f6b05243f8403a97c4df05c92e3fe5002238a7931f796afac51d8
7
- data.tar.gz: 7c368e8e38c314dd01eff563993d82ca0329ef17562223f1aaac78f5bf32946c703d968a441a9a7f25f24b8a9bb46690acec8dd4ce00b160f2d794ebec9c3527
6
+ metadata.gz: '090490e56abc99cb6a4f2febde1ce704b31bfa5d04d3635acd662f3609beba5fe4396f537bc397771d3426b1347d913c3f4b88b888b03da0c22eb24602ca4986'
7
+ data.tar.gz: ae5305cffa2d072c8f96d23277b0625915bf0f957bf2f9b1956e97dca56c34b28aa4de3a77de867bd010d269202f4b9573dbcc35f45e1a4cbf6f39c994481d76
@@ -46,7 +46,7 @@ module KBSecret
46
46
  # @api private
47
47
  def self.load_record!(session, path)
48
48
  hsh = JSON.parse(File.read(path), symbolize_names: true)
49
- klass = record_classes.find { |c| c.type == hsh[:type].to_sym }
49
+ klass = class_for hsh[:type]
50
50
  klass&.load!(session, hsh)
51
51
  rescue
52
52
  raise Exceptions::RecordLoadError, path
@@ -175,6 +175,8 @@ module KBSecret
175
175
  # @note Every sync updates the record's timestamp.
176
176
  # @return [void]
177
177
  def sync!
178
+ return if @defer_sync
179
+
178
180
  # bump the timestamp every time we sync
179
181
  @timestamp = Time.now.to_i
180
182
 
@@ -188,6 +190,19 @@ module KBSecret
188
190
  def populate_internal_fields
189
191
  nil # stub
190
192
  end
193
+
194
+ # Evaluate the given block within the current instance, deferring any
195
+ # synchronizations caused by method calls (e.g., field changes).
196
+ # @param implicit [Boolean] whether or not to call {#sync!} at the end of the block
197
+ # @return [void]
198
+ # @note This is useful for decreasing the number of writes performed, especially if multiple
199
+ # fields within the record are modified simultaneously.
200
+ def defer_sync(implicit: true, &block)
201
+ @defer_sync = true
202
+ instance_eval(&block)
203
+ @defer_sync = false
204
+ sync! if implicit
205
+ end
191
206
  end
192
207
  end
193
208
  end
@@ -13,6 +13,15 @@ module KBSecret
13
13
  data_field :variable, sensitive: false
14
14
  data_field :value
15
15
 
16
+ # @return [void]
17
+ # @see Abstract#populate_internal_fields
18
+ def populate_internal_fields
19
+ defer_sync implicit: false do
20
+ self.variable = variable.shellescape
21
+ self.value = value.shellescape
22
+ end
23
+ end
24
+
16
25
  # @return [String] a sh-style environment assignment
17
26
  def to_assignment
18
27
  "#{variable}=#{value}"
@@ -35,7 +35,11 @@ module KBSecret
35
35
  # @return [void]
36
36
  # @see Abstract#populate_internal_fields
37
37
  def populate_internal_fields
38
- self.status = "suspended"
38
+ defer_sync implicit: false do
39
+ self.status = "suspended"
40
+ self.start = nil
41
+ self.stop = nil
42
+ end
39
43
  end
40
44
 
41
45
  # @return [Boolean] whether or not the item is marked as started
data/lib/version.rb CHANGED
@@ -2,5 +2,5 @@
2
2
 
3
3
  module KBSecret
4
4
  # kbsecret's current version
5
- VERSION = "0.8.0.pre.3"
5
+ VERSION = "0.8.0.pre.4"
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: 0.8.0.pre.3
4
+ version: 0.8.0.pre.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-07-22 00:00:00.000000000 Z
11
+ date: 2017-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fpm
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.7.3
55
+ - !ruby/object:Gem::Dependency
56
+ name: simplecov
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: yard
57
71
  requirement: !ruby/object:Gem::Requirement