kennel 1.12.0 → 1.12.1

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
  SHA256:
3
- metadata.gz: 7114ffae96587ada9ea64441476daf3caf82f1149c877e9529a598651f25eece
4
- data.tar.gz: 57986d14b955e2b392f68742e40b2284d8a3d36e67a8bce8d71c57ee35842145
3
+ metadata.gz: de90e72ad4a031e9da3725ee093fadb0ab3e683cdcd2167e0d22560b992660d0
4
+ data.tar.gz: '06971c4f0bb06f8e662b1bd7742f054d3e6fc4a09cf52b040718f4a904ad8e73'
5
5
  SHA512:
6
- metadata.gz: 0f205bdb359a2ce62a6d4564e89b9e13ebc7faed6ce3e7ec41fdff29a03ea86b9017c8cfcfe1c347ce4f77d7ed895fd5606f6373638cad92a30b5e49d5e5425e
7
- data.tar.gz: 6619e5a232fe196deabcf5ef48d80ab01733f93922b842762cdd6baf705b5e72e70193d0f36eedb1bd53e21dd63804701797b6f491547a797b1dc3f24b3d04b2
6
+ metadata.gz: ed56533779e791ec3fd21773c7788a1e961d2e05b34b9f9285baefb8ed3eba554d7020a102a856f64d2643d9f48a251a13e936f3aaf7176d9e0c379a3d17e730
7
+ data.tar.gz: 9d1b27677924dfe3d36f48f0017eceaaf619dbdd5881dd1cde49272df51324baf35793f30e1e98eb50819dc3a57a5629eecec5c7bb612f7b6d22fe219d375f66
data/lib/kennel/syncer.rb CHANGED
@@ -29,19 +29,19 @@ module Kennel
29
29
  end
30
30
 
31
31
  def update
32
- block_irreversible_partial_changes
33
-
34
32
  @create.each do |_, e|
35
33
  reply = @api.create e.class.api_resource, e.as_json
36
34
  reply = unnest(e.class.api_resource, reply)
37
35
  puts "Created #{e.class.api_resource} #{tracking_id(e.as_json)} #{e.url(reply.fetch(:id))}"
38
36
  end
39
37
 
38
+ block_irreversible_partial_updates
40
39
  @update.each do |id, e|
41
40
  @api.update e.class.api_resource, id, e.as_json
42
41
  puts "Updated #{e.class.api_resource} #{tracking_id(e.as_json)} #{e.url(id)}"
43
42
  end
44
43
 
44
+ block_irreversible_partial_deletes
45
45
  @delete.each do |id, _, a|
46
46
  @api.delete a.fetch(:api_resource), id
47
47
  puts "Deleted #{a.fetch(:api_resource)} #{tracking_id(a)} #{id}"
@@ -169,13 +169,22 @@ module Kennel
169
169
  end
170
170
  end
171
171
 
172
- def block_irreversible_partial_changes
172
+ def block_irreversible_partial_updates
173
173
  return unless @project_filter
174
- return if
175
- @delete.none? &&
176
- @update.none? { |_, e, _, diff| e.id && diff.any? { |_, field| TRACKING_FIELDS.include?(field.to_sym) } }
174
+ return if @update.none? { |_, e, _, diff| e.id && diff.any? { |_, field| TRACKING_FIELDS.include?(field.to_sym) } }
175
+ raise <<~TEXT
176
+ Updates with PROJECT= filter should not update #{TRACKING_FIELDS.join("/")} of resources with a set `id:`, since this makes them get deleted by a full update.
177
+ Remove the `id:` to test them out, which will result in a copy being created and later deleted.
178
+ TEXT
179
+ end
177
180
 
178
- raise "Partial updates should not modify resources with an id, since these changes are irreversible"
181
+ def block_irreversible_partial_deletes
182
+ return unless @project_filter
183
+ return if @delete.empty?
184
+ raise <<~TEXT
185
+ Deletes with PROJECT= filter should not delete resources, since they could end up deleting things with a fixed `id:`.
186
+ Run a full update from an updated master branch to delete unwanted resources.
187
+ TEXT
179
188
  end
180
189
 
181
190
  def filter_by_project!(definitions)
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Kennel
3
- VERSION = "1.12.0"
3
+ VERSION = "1.12.1"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kennel
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.12.0
4
+ version: 1.12.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser