zonesync 0.1.2 → 0.2.0

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
  SHA256:
3
- metadata.gz: de0f19d0c0fc5e8ce4abdbf8162e812bc8e9625949c569f8241f1dd3a26b1d59
4
- data.tar.gz: ac995b1a37c31ebfcc942d1b7bdf8af61d3ea542b928181d98a5339ae3ed873f
3
+ metadata.gz: 4483586b922fcb40130de86a415fdf440dd46afa556dfa45e87e0d6d398f52d7
4
+ data.tar.gz: 88cbb6f82331655a9f78d49ee9b4013c2011bd94c3bb04831b6ebd58b4b968e5
5
5
  SHA512:
6
- metadata.gz: 2ae81d95b270a1832003e80fa9b9a239fa84550baef01b2e965ea98c4d9088386cf7bda17c25dc62d91b1bb1d24fb6e743957246b38f927219844185d8eefc89
7
- data.tar.gz: a21efe23b40750c68ab57597fca878771fdf1e5738b847d818b56fb4331af83094fb78d5d340f006815c264cd80217239c2a0be59e77295ad22c797838af3657
6
+ metadata.gz: 8bdd45b0a0d43e91856f488a53f8880c3946f6ab566f9e13a54209a76b295ca76f3f6fb1e62e607594d0abea3963ddefd9576c593e804832bd2580e3b51e18fc
7
+ data.tar.gz: d5afd17873627c461936dfd62038bd471fa7c83296981daca019ba9b2614c269cfa68b865d69a54dfd543c6b9a5d9c537bfe88c12cdca4885898b7db433bfa6a
data/README.md CHANGED
@@ -1,4 +1,6 @@
1
- # zonesync
1
+ # Zonesync
2
+
3
+ [![CI Status](https://github.com/botandrose/zonesync/workflows/CI/badge.svg?branch=master)](https://github.com/botandrose/zonesync/actions?query=workflow%3ACI+branch%3Amaster)
2
4
 
3
5
  Sync your DNS host with your DNS zone file, making it easy to version your zone file and sync changes.
4
6
 
@@ -8,13 +8,21 @@ module Zonesync
8
8
  end
9
9
 
10
10
  def diffable_records
11
- DNS::Zonefile.load(read).records.map do |record|
11
+ zonefile.records.map do |record|
12
12
  Record.from_dns_zonefile_record(record)
13
13
  end.select do |record|
14
14
  %w[A AAAA CNAME MX TXT SPF NAPTR PTR].include?(record.type)
15
15
  end.sort
16
16
  end
17
17
 
18
+ private def zonefile
19
+ body = read
20
+ if body !~ /\sSOA\s/ # insert dummy SOA to trick parser if needed
21
+ body.sub!(/\n([^$])/, "\n@ 1 SOA example.com example.com ( 2000010101 1 1 1 1 )\n\\1")
22
+ end
23
+ DNS::Zonefile.load(body)
24
+ end
25
+
18
26
  def read record
19
27
  raise NotImplementedError
20
28
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Zonesync
4
- VERSION = "0.1.2"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/zonesync.rb CHANGED
@@ -3,17 +3,17 @@ require "zonesync/diff"
3
3
 
4
4
  module Zonesync
5
5
  def self.call zonefile:, credentials:
6
- Sync.new(zonefile, credentials).call
6
+ Sync.new({ provider: "Filesystem", path: zonefile }, credentials).call
7
7
  end
8
8
 
9
- class Sync < Struct.new(:zonefile, :credentials)
9
+ class Sync < Struct.new(:source, :destination)
10
10
  def call
11
- local = Provider.from({ provider: "Filesystem", path: zonefile })
12
- remote = Provider.from(credentials)
13
- operations = Diff.call(from: remote, to: local)
11
+ source = Provider.from(self.source)
12
+ destination = Provider.from(self.destination)
13
+ operations = Diff.call(from: destination, to: source)
14
14
  operations.each do |method, args|
15
15
  puts [method, args].inspect
16
- remote.send(method, args)
16
+ destination.send(method, args)
17
17
  end
18
18
  end
19
19
  end
data/zonesync.gemspec CHANGED
@@ -30,6 +30,7 @@ Gem::Specification.new do |spec|
30
30
  spec.add_dependency "dns-zonefile", "~>1.0"
31
31
  spec.add_dependency "diff-lcs", "~>1.4"
32
32
 
33
+ spec.add_development_dependency "rake"
33
34
  spec.add_development_dependency "rspec"
34
35
  spec.add_development_dependency "webmock"
35
36
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zonesync
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Micah Geisel
@@ -39,6 +39,20 @@ dependencies:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: '1.4'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rake
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
42
56
  - !ruby/object:Gem::Dependency
43
57
  name: rspec
44
58
  requirement: !ruby/object:Gem::Requirement