record_store 6.3.1 → 6.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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +17 -0
  3. data/.github/workflows/ci.yml +31 -0
  4. data/.github/workflows/cla.yml +23 -0
  5. data/.github/workflows/stale-action-handling.yml +31 -0
  6. data/.rubocop-https---shopify-github-io-ruby-style-guide-rubocop-yml +10 -5
  7. data/.rubocop.yml +26 -5
  8. data/.travis.yml +1 -1
  9. data/CHANGELOG.md +52 -0
  10. data/README.md +13 -0
  11. data/bin/console +1 -0
  12. data/bin/rubocop +4 -2
  13. data/dev.yml +1 -1
  14. data/lib/record_store/changeset.rb +22 -18
  15. data/lib/record_store/cli.rb +13 -14
  16. data/lib/record_store/provider/dnsimple/patch_request_error_to_include_errors.rb +20 -0
  17. data/lib/record_store/provider/dnsimple.rb +10 -11
  18. data/lib/record_store/provider/dynect.rb +5 -7
  19. data/lib/record_store/provider/google_cloud_dns.rb +9 -13
  20. data/lib/record_store/provider/ns1/client.rb +3 -1
  21. data/lib/record_store/provider/ns1/patch_api_header.rb +1 -1
  22. data/lib/record_store/provider/ns1.rb +11 -8
  23. data/lib/record_store/provider/oracle_cloud_dns.rb +4 -3
  24. data/lib/record_store/provider.rb +23 -19
  25. data/lib/record_store/record/alias.rb +1 -1
  26. data/lib/record_store/record/caa.rb +3 -1
  27. data/lib/record_store/record/cname.rb +1 -1
  28. data/lib/record_store/record.rb +6 -4
  29. data/lib/record_store/version.rb +1 -1
  30. data/lib/record_store/zone/config/implicit_record_template.rb +112 -0
  31. data/lib/record_store/zone/config.rb +5 -3
  32. data/lib/record_store/zone/yaml_definitions.rb +7 -2
  33. data/lib/record_store/zone.rb +80 -18
  34. data/lib/record_store.rb +15 -2
  35. data/record_store.gemspec +14 -14
  36. data/template/config.yml +1 -0
  37. data/template/templates/implicit_records/implicit_example.yml.erb +15 -0
  38. data/template/zones/dynect.example.com.yml +2 -0
  39. metadata +95 -70
data/record_store.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
 
11
11
  spec.summary = 'Manage DNS using git'
12
12
  spec.description = "Manage DNS through a git-based workflow. If you're looking for the original 'record_store',"\
13
- " that has been renamed to 'sequel_record_store'."
13
+ " that has been renamed to 'sequel_record_store'."
14
14
  spec.homepage = 'https://github.com/Shopify/record_store'
15
15
  spec.license = 'MIT'
16
16
 
@@ -26,28 +26,28 @@ Gem::Specification.new do |spec|
26
26
 
27
27
  spec.required_ruby_version = '>= 2.0'
28
28
 
29
- spec.add_runtime_dependency 'thor', '~> 0.20.3'
30
- spec.add_runtime_dependency 'activesupport', '>= 4.2'
31
29
  spec.add_runtime_dependency 'activemodel', '>= 4.2'
30
+ spec.add_runtime_dependency 'activesupport', '>= 4.2'
32
31
  spec.add_runtime_dependency 'ejson'
32
+ spec.add_runtime_dependency 'thor', '>= 0.20.3', '< 1.4.0'
33
33
 
34
- spec.add_runtime_dependency 'fog', '>= 1.33.0'
34
+ spec.add_runtime_dependency 'dnsimple', '>= 4.4', '< 8.9'
35
+ spec.add_runtime_dependency 'fog-dynect', '>= 0.4', '< 0.6'
35
36
  spec.add_runtime_dependency 'fog-json'
36
37
  spec.add_runtime_dependency 'fog-xml'
37
- spec.add_runtime_dependency 'fog-dynect', '~> 0.4.0'
38
- spec.add_runtime_dependency 'dnsimple', '~> 4.4.0'
39
- spec.add_runtime_dependency 'google-cloud-dns', '~> 0.31.0'
40
- spec.add_runtime_dependency 'ruby-limiter', '~> 1.0', '>= 1.0.1'
38
+ spec.add_runtime_dependency 'google-cloud-dns', '~> 0.31'
41
39
  spec.add_runtime_dependency 'ns1'
42
- spec.add_runtime_dependency 'oci', '~> 2.6.0'
40
+ spec.add_runtime_dependency 'oci', '~> 2.14.0'
41
+ spec.add_runtime_dependency 'ruby-limiter', '>= 1.0.1', '< 3'
43
42
 
44
- spec.add_development_dependency 'byebug'
45
- spec.add_development_dependency 'rake'
46
43
  spec.add_development_dependency 'bundler'
44
+ spec.add_development_dependency 'byebug'
45
+ spec.add_development_dependency 'minitest-focus'
47
46
  spec.add_development_dependency 'mocha'
48
- spec.add_development_dependency 'vcr'
49
47
  spec.add_development_dependency 'pry'
48
+ spec.add_development_dependency 'rake'
49
+ spec.add_development_dependency 'rubocop', '~> 1.60.2'
50
+ spec.add_development_dependency 'rubocop-shopify', '~> 2.14.0'
51
+ spec.add_development_dependency 'vcr'
50
52
  spec.add_development_dependency 'webmock'
51
- spec.add_development_dependency 'rubocop', '0.89.1'
52
- spec.add_development_dependency 'minitest-focus'
53
53
  end
data/template/config.yml CHANGED
@@ -1,2 +1,3 @@
1
1
  zones_path: zones/
2
2
  secrets_path: secrets.json
3
+ implicit_records_templates_path: templates/implicit_records/
@@ -0,0 +1,15 @@
1
+ each_record:
2
+ - type: A
3
+ fqdn: abc.123.com.
4
+ - type: TXT
5
+ except_record:
6
+ - fqdn: !ruby/regexp /^_/
7
+ conflict_with:
8
+ - type: TXT
9
+ fqdn: <%= record.fqdn %>.more.domain.com.
10
+ injected_records:
11
+ - type: CNAME
12
+ ttl: 3600
13
+ fqdn: <%= record.fqdn %>.added.information.com
14
+ cname: <%= record.fqdn %>.more.added.information.com.
15
+
@@ -5,6 +5,8 @@ dynect.example.com:
5
5
  ignore_patterns:
6
6
  - type: NS
7
7
  fqdn: dynect.example.com.
8
+ implicit_records_templates:
9
+ - implicit_example.yml.erb
8
10
  records:
9
11
  - type: A
10
12
  fqdn: a-record.dynect.example.com.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: record_store
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.3.1
4
+ version: 6.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Willem van Bergen
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-10-09 00:00:00.000000000 Z
12
+ date: 2024-02-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: thor
15
+ name: activemodel
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: 0.20.3
20
+ version: '4.2'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - "~>"
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: 0.20.3
27
+ version: '4.2'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: activesupport
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -40,47 +40,79 @@ dependencies:
40
40
  - !ruby/object:Gem::Version
41
41
  version: '4.2'
42
42
  - !ruby/object:Gem::Dependency
43
- name: activemodel
43
+ name: ejson
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - ">="
47
47
  - !ruby/object:Gem::Version
48
- version: '4.2'
48
+ version: '0'
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - ">="
54
54
  - !ruby/object:Gem::Version
55
- version: '4.2'
55
+ version: '0'
56
56
  - !ruby/object:Gem::Dependency
57
- name: ejson
57
+ name: thor
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - ">="
61
61
  - !ruby/object:Gem::Version
62
- version: '0'
62
+ version: 0.20.3
63
+ - - "<"
64
+ - !ruby/object:Gem::Version
65
+ version: 1.4.0
63
66
  type: :runtime
64
67
  prerelease: false
65
68
  version_requirements: !ruby/object:Gem::Requirement
66
69
  requirements:
67
70
  - - ">="
68
71
  - !ruby/object:Gem::Version
69
- version: '0'
72
+ version: 0.20.3
73
+ - - "<"
74
+ - !ruby/object:Gem::Version
75
+ version: 1.4.0
70
76
  - !ruby/object:Gem::Dependency
71
- name: fog
77
+ name: dnsimple
72
78
  requirement: !ruby/object:Gem::Requirement
73
79
  requirements:
74
80
  - - ">="
75
81
  - !ruby/object:Gem::Version
76
- version: 1.33.0
82
+ version: '4.4'
83
+ - - "<"
84
+ - !ruby/object:Gem::Version
85
+ version: '8.9'
77
86
  type: :runtime
78
87
  prerelease: false
79
88
  version_requirements: !ruby/object:Gem::Requirement
80
89
  requirements:
81
90
  - - ">="
82
91
  - !ruby/object:Gem::Version
83
- version: 1.33.0
92
+ version: '4.4'
93
+ - - "<"
94
+ - !ruby/object:Gem::Version
95
+ version: '8.9'
96
+ - !ruby/object:Gem::Dependency
97
+ name: fog-dynect
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0.4'
103
+ - - "<"
104
+ - !ruby/object:Gem::Version
105
+ version: '0.6'
106
+ type: :runtime
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: '0.4'
113
+ - - "<"
114
+ - !ruby/object:Gem::Version
115
+ version: '0.6'
84
116
  - !ruby/object:Gem::Dependency
85
117
  name: fog-json
86
118
  requirement: !ruby/object:Gem::Requirement
@@ -110,95 +142,81 @@ dependencies:
110
142
  - !ruby/object:Gem::Version
111
143
  version: '0'
112
144
  - !ruby/object:Gem::Dependency
113
- name: fog-dynect
145
+ name: google-cloud-dns
114
146
  requirement: !ruby/object:Gem::Requirement
115
147
  requirements:
116
148
  - - "~>"
117
149
  - !ruby/object:Gem::Version
118
- version: 0.4.0
150
+ version: '0.31'
119
151
  type: :runtime
120
152
  prerelease: false
121
153
  version_requirements: !ruby/object:Gem::Requirement
122
154
  requirements:
123
155
  - - "~>"
124
156
  - !ruby/object:Gem::Version
125
- version: 0.4.0
157
+ version: '0.31'
126
158
  - !ruby/object:Gem::Dependency
127
- name: dnsimple
159
+ name: ns1
128
160
  requirement: !ruby/object:Gem::Requirement
129
161
  requirements:
130
- - - "~>"
162
+ - - ">="
131
163
  - !ruby/object:Gem::Version
132
- version: 4.4.0
164
+ version: '0'
133
165
  type: :runtime
134
166
  prerelease: false
135
167
  version_requirements: !ruby/object:Gem::Requirement
136
168
  requirements:
137
- - - "~>"
169
+ - - ">="
138
170
  - !ruby/object:Gem::Version
139
- version: 4.4.0
171
+ version: '0'
140
172
  - !ruby/object:Gem::Dependency
141
- name: google-cloud-dns
173
+ name: oci
142
174
  requirement: !ruby/object:Gem::Requirement
143
175
  requirements:
144
176
  - - "~>"
145
177
  - !ruby/object:Gem::Version
146
- version: 0.31.0
178
+ version: 2.14.0
147
179
  type: :runtime
148
180
  prerelease: false
149
181
  version_requirements: !ruby/object:Gem::Requirement
150
182
  requirements:
151
183
  - - "~>"
152
184
  - !ruby/object:Gem::Version
153
- version: 0.31.0
185
+ version: 2.14.0
154
186
  - !ruby/object:Gem::Dependency
155
187
  name: ruby-limiter
156
188
  requirement: !ruby/object:Gem::Requirement
157
189
  requirements:
158
- - - "~>"
159
- - !ruby/object:Gem::Version
160
- version: '1.0'
161
190
  - - ">="
162
191
  - !ruby/object:Gem::Version
163
192
  version: 1.0.1
193
+ - - "<"
194
+ - !ruby/object:Gem::Version
195
+ version: '3'
164
196
  type: :runtime
165
197
  prerelease: false
166
198
  version_requirements: !ruby/object:Gem::Requirement
167
199
  requirements:
168
- - - "~>"
169
- - !ruby/object:Gem::Version
170
- version: '1.0'
171
200
  - - ">="
172
201
  - !ruby/object:Gem::Version
173
202
  version: 1.0.1
203
+ - - "<"
204
+ - !ruby/object:Gem::Version
205
+ version: '3'
174
206
  - !ruby/object:Gem::Dependency
175
- name: ns1
207
+ name: bundler
176
208
  requirement: !ruby/object:Gem::Requirement
177
209
  requirements:
178
210
  - - ">="
179
211
  - !ruby/object:Gem::Version
180
212
  version: '0'
181
- type: :runtime
213
+ type: :development
182
214
  prerelease: false
183
215
  version_requirements: !ruby/object:Gem::Requirement
184
216
  requirements:
185
217
  - - ">="
186
218
  - !ruby/object:Gem::Version
187
219
  version: '0'
188
- - !ruby/object:Gem::Dependency
189
- name: oci
190
- requirement: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - "~>"
193
- - !ruby/object:Gem::Version
194
- version: 2.6.0
195
- type: :runtime
196
- prerelease: false
197
- version_requirements: !ruby/object:Gem::Requirement
198
- requirements:
199
- - - "~>"
200
- - !ruby/object:Gem::Version
201
- version: 2.6.0
202
220
  - !ruby/object:Gem::Dependency
203
221
  name: byebug
204
222
  requirement: !ruby/object:Gem::Requirement
@@ -214,7 +232,7 @@ dependencies:
214
232
  - !ruby/object:Gem::Version
215
233
  version: '0'
216
234
  - !ruby/object:Gem::Dependency
217
- name: rake
235
+ name: minitest-focus
218
236
  requirement: !ruby/object:Gem::Requirement
219
237
  requirements:
220
238
  - - ">="
@@ -228,7 +246,7 @@ dependencies:
228
246
  - !ruby/object:Gem::Version
229
247
  version: '0'
230
248
  - !ruby/object:Gem::Dependency
231
- name: bundler
249
+ name: mocha
232
250
  requirement: !ruby/object:Gem::Requirement
233
251
  requirements:
234
252
  - - ">="
@@ -242,7 +260,7 @@ dependencies:
242
260
  - !ruby/object:Gem::Version
243
261
  version: '0'
244
262
  - !ruby/object:Gem::Dependency
245
- name: mocha
263
+ name: pry
246
264
  requirement: !ruby/object:Gem::Requirement
247
265
  requirements:
248
266
  - - ">="
@@ -256,7 +274,7 @@ dependencies:
256
274
  - !ruby/object:Gem::Version
257
275
  version: '0'
258
276
  - !ruby/object:Gem::Dependency
259
- name: vcr
277
+ name: rake
260
278
  requirement: !ruby/object:Gem::Requirement
261
279
  requirements:
262
280
  - - ">="
@@ -270,49 +288,49 @@ dependencies:
270
288
  - !ruby/object:Gem::Version
271
289
  version: '0'
272
290
  - !ruby/object:Gem::Dependency
273
- name: pry
291
+ name: rubocop
274
292
  requirement: !ruby/object:Gem::Requirement
275
293
  requirements:
276
- - - ">="
294
+ - - "~>"
277
295
  - !ruby/object:Gem::Version
278
- version: '0'
296
+ version: 1.60.2
279
297
  type: :development
280
298
  prerelease: false
281
299
  version_requirements: !ruby/object:Gem::Requirement
282
300
  requirements:
283
- - - ">="
301
+ - - "~>"
284
302
  - !ruby/object:Gem::Version
285
- version: '0'
303
+ version: 1.60.2
286
304
  - !ruby/object:Gem::Dependency
287
- name: webmock
305
+ name: rubocop-shopify
288
306
  requirement: !ruby/object:Gem::Requirement
289
307
  requirements:
290
- - - ">="
308
+ - - "~>"
291
309
  - !ruby/object:Gem::Version
292
- version: '0'
310
+ version: 2.14.0
293
311
  type: :development
294
312
  prerelease: false
295
313
  version_requirements: !ruby/object:Gem::Requirement
296
314
  requirements:
297
- - - ">="
315
+ - - "~>"
298
316
  - !ruby/object:Gem::Version
299
- version: '0'
317
+ version: 2.14.0
300
318
  - !ruby/object:Gem::Dependency
301
- name: rubocop
319
+ name: vcr
302
320
  requirement: !ruby/object:Gem::Requirement
303
321
  requirements:
304
- - - '='
322
+ - - ">="
305
323
  - !ruby/object:Gem::Version
306
- version: 0.89.1
324
+ version: '0'
307
325
  type: :development
308
326
  prerelease: false
309
327
  version_requirements: !ruby/object:Gem::Requirement
310
328
  requirements:
311
- - - '='
329
+ - - ">="
312
330
  - !ruby/object:Gem::Version
313
- version: 0.89.1
331
+ version: '0'
314
332
  - !ruby/object:Gem::Dependency
315
- name: minitest-focus
333
+ name: webmock
316
334
  requirement: !ruby/object:Gem::Requirement
317
335
  requirements:
318
336
  - - ">="
@@ -335,6 +353,10 @@ executables:
335
353
  extensions: []
336
354
  extra_rdoc_files: []
337
355
  files:
356
+ - ".github/dependabot.yml"
357
+ - ".github/workflows/ci.yml"
358
+ - ".github/workflows/cla.yml"
359
+ - ".github/workflows/stale-action-handling.yml"
338
360
  - ".gitignore"
339
361
  - ".rubocop-https---shopify-github-io-ruby-style-guide-rubocop-yml"
340
362
  - ".rubocop.yml"
@@ -356,6 +378,7 @@ files:
356
378
  - lib/record_store/provider.rb
357
379
  - lib/record_store/provider/dnsimple.rb
358
380
  - lib/record_store/provider/dnsimple/patch_api_header.rb
381
+ - lib/record_store/provider/dnsimple/patch_request_error_to_include_errors.rb
359
382
  - lib/record_store/provider/dynect.rb
360
383
  - lib/record_store/provider/google_cloud_dns.rb
361
384
  - lib/record_store/provider/ns1.rb
@@ -380,6 +403,7 @@ files:
380
403
  - lib/record_store/zone.rb
381
404
  - lib/record_store/zone/config.rb
382
405
  - lib/record_store/zone/config/ignore_pattern.rb
406
+ - lib/record_store/zone/config/implicit_record_template.rb
383
407
  - lib/record_store/zone/yaml_definitions.rb
384
408
  - record_store.gemspec
385
409
  - shipit.rubygems.yml
@@ -389,6 +413,7 @@ files:
389
413
  - template/bin/test
390
414
  - template/config.yml
391
415
  - template/secrets.json
416
+ - template/templates/implicit_records/implicit_example.yml.erb
392
417
  - template/zones/dnsimple.example.com.yml
393
418
  - template/zones/dnsimple.example.com/A__a-record.yml
394
419
  - template/zones/dnsimple.example.com/TXT__marco.yml
@@ -414,7 +439,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
414
439
  - !ruby/object:Gem::Version
415
440
  version: '0'
416
441
  requirements: []
417
- rubygems_version: 3.0.3
442
+ rubygems_version: 3.5.6
418
443
  signing_key:
419
444
  specification_version: 4
420
445
  summary: Manage DNS using git