changed the delta function
Now it returns a hash, not an array.
--- a/bin/dnsvi Wed Jan 21 21:50:27 2015 +0100
+++ b/bin/dnsvi Wed Jan 21 23:07:35 2015 +0100
@@ -65,18 +65,18 @@
};
### @zone2
- my ($add, $del) = delta(\@zone1, \@zone2);
- if ((@$add + @$del) == 0) {
+ my %delta = delta(\@zone1, \@zone2);
+ if (!%delta) {
say 'nothing changed';
return 0;
}
say 'The following changes need your confirmation.';
- say join "\n", show($add, $del);
+ say join "\n", show(@delta{qw/add del/});
print 'confirm (yes|NO): ';
return 1 if <STDIN> !~ /^y/i;
- update(\@zone1, $add, $del, {
+ update(\@zone1, @delta{qw/add del/}, {
-server => $o{server},
-local => $o{local},
-debug => $o{debug},
--- a/lib/DNS/Vi.pm Wed Jan 21 21:50:27 2015 +0100
+++ b/lib/DNS/Vi.pm Wed Jan 21 23:07:35 2015 +0100
@@ -205,7 +205,8 @@
push @add, "@{$_}{qw/label ttl rrtype data/}" foreach values %zone2;
push @del, "@{$_}{qw/label ttl rrtype data/}" foreach values %zone1;
- return (\@add, \@del);
+ return () if (!@add and !@del);
+ return (add => \@add, del => \@del);
}
sub edit {
@@ -223,7 +224,7 @@
sub show {
my ($add, $del) = @_;
- my @out = ((map { " - $_ " } @$del), (map { " + $_ " } @$add),);
+ my @out = ((map { " - $_ " } @$del), (map { " + $_ " } @$add));
return @out;
}
--- a/t/10-dnsvi.t Wed Jan 21 21:50:27 2015 +0100
+++ b/t/10-dnsvi.t Wed Jan 21 23:07:35 2015 +0100
@@ -126,9 +126,9 @@
}
}
- my ($added, $deleted) = delta(\@zone, \@zone);
- is @$added, 0 => 'nothing added';
- is @$deleted, 0 => 'nothing deleted';
+ my %delta = delta(\@zone, \@zone);
+ is @{$delta{add}}, 0 => 'nothing added';
+ is @{$delta{del}}, 0 => 'nothing deleted';
}
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/t/20-cname-change.t Wed Jan 21 23:07:35 2015 +0100
@@ -0,0 +1,20 @@
+#! perl
+use strict;
+use warnings;
+use Test::More;
+use DNS::Vi;
+
+sub slurp {
+ local @ARGV = @_;
+ join "\n", <>;
+}
+
+ok my @zone1 = parse(slurp 't/samples/frey-1') => 'got 1st zone';
+ok my @zone2 = parse(slurp 't/samples/frey-2') => 'got 2nd zone';;
+
+ok my %delta = delta(\@zone1, \@zone2) => 'got delta';
+is @{$delta{add}}, 2 => '2 added';
+is @{$delta{del}}, 3 => '3 deleted';
+
+
+done_testing;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/t/samples/frey-2 Wed Jan 21 23:07:35 2015 +0100
@@ -0,0 +1,15 @@
+$TTL 5m
+$ORIGIN example.com.
+@ SOA p hostmaster (
+ 47
+ 1h
+ 15m
+ 7d
+ 5m
+ )
+
+ NS p
+p A 1.1.1.1
+
+uxa.frey CNAME proxy.mm.frey
+uxb.frey CNAME portal.mm.frey