kbsecret 0.8.0.pre.3 → 0.8.0.pre.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: 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