dnsmadeeasy 0.3.5 → 1.0.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 (63) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +31 -0
  3. data/.gitignore +2 -0
  4. data/.rubocop.yml +6 -0
  5. data/.rubocop_todo.yml +272 -107
  6. data/.travis.yml +2 -1
  7. data/CLAUDE.md +67 -0
  8. data/Gemfile +9 -1
  9. data/README.md +506 -310
  10. data/Rakefile +4 -4
  11. data/dnsmadeeasy.gemspec +44 -27
  12. data/docs/badges/coverage_badge.svg +21 -0
  13. data/docs/dry-cli-based-tools.webloc +8 -0
  14. data/docs/plan-zone-management.md +756 -0
  15. data/docs/plans/01-plan-ruby4-baseline.md +38 -0
  16. data/docs/plans/02-plan-dry-cli-launcher.md +44 -0
  17. data/docs/plans/03-plan-account-command.md +43 -0
  18. data/docs/plans/04-plan-zone-record-model.md +48 -0
  19. data/docs/plans/05-plan-zone-parser.md +41 -0
  20. data/docs/plans/06-plan-zone-formatter.md +43 -0
  21. data/docs/plans/07-plan-zone-export.md +58 -0
  22. data/docs/plans/08-plan-zone-diff.md +42 -0
  23. data/docs/plans/09-plan-zone-apply.md +69 -0
  24. data/docs/plans/10-plan-docs-cleanup.md +55 -0
  25. data/docs/spec-zone-management.md +242 -0
  26. data/exe/dme +13 -2
  27. data/exe/dmez +6 -0
  28. data/lib/dme.rb +6 -6
  29. data/lib/dnsmadeeasy/api/client.rb +31 -32
  30. data/lib/dnsmadeeasy/cli/box_output.rb +9 -0
  31. data/lib/dnsmadeeasy/cli/commands/account.rb +222 -0
  32. data/lib/dnsmadeeasy/cli/commands/base.rb +119 -0
  33. data/lib/dnsmadeeasy/cli/commands/legacy_operation.rb +30 -0
  34. data/lib/dnsmadeeasy/cli/commands/version.rb +22 -0
  35. data/lib/dnsmadeeasy/cli/commands/zone.rb +326 -0
  36. data/lib/dnsmadeeasy/cli/commands.rb +19 -0
  37. data/lib/dnsmadeeasy/cli/input.rb +14 -0
  38. data/lib/dnsmadeeasy/cli/launcher.rb +53 -0
  39. data/lib/dnsmadeeasy/cli/message_helpers.rb +81 -0
  40. data/lib/dnsmadeeasy/cli/reported_error.rb +10 -0
  41. data/lib/dnsmadeeasy/credentials/api_keys.rb +11 -9
  42. data/lib/dnsmadeeasy/credentials/yaml_file.rb +28 -27
  43. data/lib/dnsmadeeasy/credentials.rb +3 -4
  44. data/lib/dnsmadeeasy/runner.rb +102 -98
  45. data/lib/dnsmadeeasy/types.rb +19 -0
  46. data/lib/dnsmadeeasy/version.rb +2 -1
  47. data/lib/dnsmadeeasy/zone/aname_flattener.rb +63 -0
  48. data/lib/dnsmadeeasy/zone/apply_executor.rb +189 -0
  49. data/lib/dnsmadeeasy/zone/apply_result.rb +22 -0
  50. data/lib/dnsmadeeasy/zone/diff.rb +152 -0
  51. data/lib/dnsmadeeasy/zone/file.rb +26 -0
  52. data/lib/dnsmadeeasy/zone/parser.rb +172 -0
  53. data/lib/dnsmadeeasy/zone/plan.rb +28 -0
  54. data/lib/dnsmadeeasy/zone/plan_action.rb +29 -0
  55. data/lib/dnsmadeeasy/zone/plan_renderer.rb +91 -0
  56. data/lib/dnsmadeeasy/zone/provider_record.rb +18 -0
  57. data/lib/dnsmadeeasy/zone/record.rb +44 -0
  58. data/lib/dnsmadeeasy/zone/record_set.rb +23 -0
  59. data/lib/dnsmadeeasy/zone/remote_adapter.rb +94 -0
  60. data/lib/dnsmadeeasy/zone/remote_records.rb +26 -0
  61. data/lib/dnsmadeeasy/zone/serializer.rb +115 -0
  62. data/lib/dnsmadeeasy.rb +61 -31
  63. metadata +184 -23
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dnsmadeeasy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konstantin Gredeskoul
@@ -10,10 +10,9 @@ authors:
10
10
  - James Hart
11
11
  - Phil Cohen
12
12
  - Praneeth Are
13
- autorequire:
14
13
  bindir: exe
15
14
  cert_chain: []
16
- date: 2019-12-04 00:00:00.000000000 Z
15
+ date: 1980-01-02 00:00:00.000000000 Z
17
16
  dependencies:
18
17
  - !ruby/object:Gem::Dependency
19
18
  name: awesome_print
@@ -43,6 +42,76 @@ dependencies:
43
42
  - - ">="
44
43
  - !ruby/object:Gem::Version
45
44
  version: '0'
45
+ - !ruby/object:Gem::Dependency
46
+ name: dns-zonefile
47
+ requirement: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ type: :runtime
53
+ prerelease: false
54
+ version_requirements: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ - !ruby/object:Gem::Dependency
60
+ name: dry-cli
61
+ requirement: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ - !ruby/object:Gem::Dependency
74
+ name: dry-monads
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ type: :runtime
81
+ prerelease: false
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ - !ruby/object:Gem::Dependency
88
+ name: dry-struct
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ type: :runtime
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ - !ruby/object:Gem::Dependency
102
+ name: dry-types
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ type: :runtime
109
+ prerelease: false
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
46
115
  - !ruby/object:Gem::Dependency
47
116
  name: hashie
48
117
  requirement: !ruby/object:Gem::Requirement
@@ -72,13 +141,41 @@ dependencies:
72
141
  - !ruby/object:Gem::Version
73
142
  version: '0'
74
143
  - !ruby/object:Gem::Dependency
75
- name: bundler
144
+ name: tsort
76
145
  requirement: !ruby/object:Gem::Requirement
77
146
  requirements:
78
147
  - - ">="
79
148
  - !ruby/object:Gem::Version
80
149
  version: '0'
81
- type: :development
150
+ type: :runtime
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
157
+ - !ruby/object:Gem::Dependency
158
+ name: tty-box
159
+ requirement: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ version: '0'
164
+ type: :runtime
165
+ prerelease: false
166
+ version_requirements: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - ">="
169
+ - !ruby/object:Gem::Version
170
+ version: '0'
171
+ - !ruby/object:Gem::Dependency
172
+ name: tty-spinner
173
+ requirement: !ruby/object:Gem::Requirement
174
+ requirements:
175
+ - - ">="
176
+ - !ruby/object:Gem::Version
177
+ version: '0'
178
+ type: :runtime
82
179
  prerelease: false
83
180
  version_requirements: !ruby/object:Gem::Requirement
84
181
  requirements:
@@ -197,16 +294,35 @@ dependencies:
197
294
  - - ">="
198
295
  - !ruby/object:Gem::Version
199
296
  version: '0'
297
+ - !ruby/object:Gem::Dependency
298
+ name: aruba
299
+ requirement: !ruby/object:Gem::Requirement
300
+ requirements:
301
+ - - ">="
302
+ - !ruby/object:Gem::Version
303
+ version: '0'
304
+ type: :development
305
+ prerelease: false
306
+ version_requirements: !ruby/object:Gem::Requirement
307
+ requirements:
308
+ - - ">="
309
+ - !ruby/object:Gem::Version
310
+ version: '0'
200
311
  description: |
201
- This is an authoratative and fully-featured API client for the DNS Provider "DnsMadeEasy.com".
312
+ This is an authoratative and fully-featured API client for the
313
+ DNS Provider "DnsMadeEasy.com".
202
314
 
203
- This library offers both a rich Ruby API that you can use to automate DNS record management, as well
204
- as a rich CLI interface with the command line executable "dme" installed when you install the gem.
205
- The gem additionally supports storing credentials in the ~/.dnsmadeeasy/credentials.yml
315
+ This library offers both a rich Ruby API that you can use to
316
+ automate DNS record management, as well
317
+ as a rich CLI interface with the command line executable "dme"
318
+ installed when you install the gem.
319
+ The gem additionally supports storing credentials in
320
+ the ~/.dnsmadeeasy/credentials.yml
206
321
  file, supports multiple accounts, encryption, and more.
207
322
 
208
- If you are using Chef consider using the "dnsmadeeasy" Chef Cookbook, while uses this gem behind
209
- the scenes: https://supermarket.chef.io/cookbooks/dnsmadeeasy<br />
323
+ If you are using Chef consider using the "dnsmadeeasy"
324
+ Chef Cookbook, while uses this gem behind
325
+ the scenes: https://supermarket.chef.io/cookbooks/dnsmadeeasy
210
326
 
211
327
  ACKNOWLEDGEMENTS:
212
328
 
@@ -216,22 +332,26 @@ description: |
216
332
  2. We also wish to thank the gem author Phil Cohen who
217
333
  kindly yielded the "dnsmadeeasy" RubyGems namespace to this gem.
218
334
 
219
- 3. We also thank Praneeth Are for contributing the support for secondary domains in 0.3.5.
335
+ 3. We also thank Praneeth Are for contributing the support for
336
+ secondary domains in 0.3.5.
220
337
  email:
221
338
  - kigster@gmail.com
222
339
  - letuboy@gmail.com
223
340
  - hjhart@gmail.com
224
341
  executables:
225
342
  - dme
343
+ - dmez
226
344
  extensions: []
227
345
  extra_rdoc_files: []
228
346
  files:
229
347
  - ".codeclimate.yml"
348
+ - ".github/workflows/ruby.yml"
230
349
  - ".gitignore"
231
350
  - ".rspec"
232
351
  - ".rubocop.yml"
233
352
  - ".rubocop_todo.yml"
234
353
  - ".travis.yml"
354
+ - CLAUDE.md
235
355
  - Gemfile
236
356
  - LICENSE.txt
237
357
  - README.md
@@ -239,20 +359,63 @@ files:
239
359
  - bin/console
240
360
  - bin/setup
241
361
  - dnsmadeeasy.gemspec
362
+ - docs/badges/coverage_badge.svg
363
+ - docs/dry-cli-based-tools.webloc
364
+ - docs/plan-zone-management.md
365
+ - docs/plans/01-plan-ruby4-baseline.md
366
+ - docs/plans/02-plan-dry-cli-launcher.md
367
+ - docs/plans/03-plan-account-command.md
368
+ - docs/plans/04-plan-zone-record-model.md
369
+ - docs/plans/05-plan-zone-parser.md
370
+ - docs/plans/06-plan-zone-formatter.md
371
+ - docs/plans/07-plan-zone-export.md
372
+ - docs/plans/08-plan-zone-diff.md
373
+ - docs/plans/09-plan-zone-apply.md
374
+ - docs/plans/10-plan-docs-cleanup.md
375
+ - docs/spec-zone-management.md
242
376
  - exe/dme
377
+ - exe/dmez
243
378
  - lib/dme.rb
244
379
  - lib/dnsmadeeasy.rb
245
380
  - lib/dnsmadeeasy/api/client.rb
381
+ - lib/dnsmadeeasy/cli/box_output.rb
382
+ - lib/dnsmadeeasy/cli/commands.rb
383
+ - lib/dnsmadeeasy/cli/commands/account.rb
384
+ - lib/dnsmadeeasy/cli/commands/base.rb
385
+ - lib/dnsmadeeasy/cli/commands/legacy_operation.rb
386
+ - lib/dnsmadeeasy/cli/commands/version.rb
387
+ - lib/dnsmadeeasy/cli/commands/zone.rb
388
+ - lib/dnsmadeeasy/cli/input.rb
389
+ - lib/dnsmadeeasy/cli/launcher.rb
390
+ - lib/dnsmadeeasy/cli/message_helpers.rb
391
+ - lib/dnsmadeeasy/cli/reported_error.rb
246
392
  - lib/dnsmadeeasy/credentials.rb
247
393
  - lib/dnsmadeeasy/credentials/api_keys.rb
248
394
  - lib/dnsmadeeasy/credentials/yaml_file.rb
249
395
  - lib/dnsmadeeasy/dme.rb
250
396
  - lib/dnsmadeeasy/runner.rb
397
+ - lib/dnsmadeeasy/types.rb
251
398
  - lib/dnsmadeeasy/version.rb
399
+ - lib/dnsmadeeasy/zone/aname_flattener.rb
400
+ - lib/dnsmadeeasy/zone/apply_executor.rb
401
+ - lib/dnsmadeeasy/zone/apply_result.rb
402
+ - lib/dnsmadeeasy/zone/diff.rb
403
+ - lib/dnsmadeeasy/zone/file.rb
404
+ - lib/dnsmadeeasy/zone/parser.rb
405
+ - lib/dnsmadeeasy/zone/plan.rb
406
+ - lib/dnsmadeeasy/zone/plan_action.rb
407
+ - lib/dnsmadeeasy/zone/plan_renderer.rb
408
+ - lib/dnsmadeeasy/zone/provider_record.rb
409
+ - lib/dnsmadeeasy/zone/record.rb
410
+ - lib/dnsmadeeasy/zone/record_set.rb
411
+ - lib/dnsmadeeasy/zone/remote_adapter.rb
412
+ - lib/dnsmadeeasy/zone/remote_records.rb
413
+ - lib/dnsmadeeasy/zone/serializer.rb
252
414
  homepage: https://github.com/kigster/dnsmadeeasy
253
415
  licenses:
254
416
  - MIT
255
- metadata: {}
417
+ metadata:
418
+ rubygems_mfa_required: 'true'
256
419
  post_install_message: |
257
420
  Thank you for using the DnsMadeEasy ruby gem, the Ruby client
258
421
  API for DnsMadeEasy.com's SDK v2. Please note that this gem
@@ -268,17 +431,16 @@ require_paths:
268
431
  - lib
269
432
  required_ruby_version: !ruby/object:Gem::Requirement
270
433
  requirements:
271
- - - ">="
434
+ - - "~>"
272
435
  - !ruby/object:Gem::Version
273
- version: '0'
436
+ version: '4.0'
274
437
  required_rubygems_version: !ruby/object:Gem::Requirement
275
438
  requirements:
276
439
  - - ">="
277
440
  - !ruby/object:Gem::Version
278
441
  version: '0'
279
442
  requirements: []
280
- rubygems_version: 3.0.6
281
- signing_key:
443
+ rubygems_version: 4.0.16
282
444
  specification_version: 4
283
445
  summary: 'This is an authoratative and fully-featured API client for the DNS Provider
284
446
  "DnsMadeEasy.com". This library offers both a rich Ruby API that you can use to
@@ -286,10 +448,9 @@ summary: 'This is an authoratative and fully-featured API client for the DNS Pro
286
448
  line executable "dme" installed when you install the gem. The gem additionally supports
287
449
  storing credentials in the ~/.dnsmadeeasy/credentials.yml file, supports multiple
288
450
  accounts, encryption, and more. If you are using Chef consider using the "dnsmadeeasy"
289
- Chef Cookbook, while uses this gem behind the scenes: https://supermarket.chef.io/cookbooks/dnsmadeeasy<br
290
- /> ACKNOWLEDGEMENTS: 1. This gem is based on the original work contributed by
291
- Wanelo.com to the now abandonded "dnsmadeeasy-rest-api" client. 2. We also wish
292
- to thank the gem author Phil Cohen who kindly yielded the "dnsmadeeasy" RubyGems
293
- namespace to this gem. 3. We also thank Praneeth Are for contributing the support
294
- for secondary domains in 0.3.5.'
451
+ Chef Cookbook, while uses this gem behind the scenes: https://supermarket.chef.io/cookbooks/dnsmadeeasy ACKNOWLEDGEMENTS: 1.
452
+ This gem is based on the original work contributed by Wanelo.com to the now abandonded
453
+ "dnsmadeeasy-rest-api" client. 2. We also wish to thank the gem author Phil Cohen
454
+ who kindly yielded the "dnsmadeeasy" RubyGems namespace to this gem. 3. We also
455
+ thank Praneeth Are for contributing the support for secondary domains in 0.3.5.'
295
456
  test_files: []