mkdir "$root/$pkghash" or die "can't mkdir $root/$pkghash";
}
my $outfile = "$root/$pkghash/$pkg";
-if (open PREV, "< $outfile") {
- $tree->load(*PREV);
- close PREV;
+my $PREV;
+if (open($PREV, "< $outfile")) {
+ $tree->load($PREV);
+ close($PREV);
}
$tree->load(*STDIN);
-open OUT, "> $outfile" or die "can't open $outfile for writing: $!\n";
-$tree->save(*OUT);
-close OUT or die "can't close $outfile: $!\n";
+my $OUT;
+open($OUT, "> $outfile") or die "can't open $outfile for writing: $!\n";
+$tree->save($OUT);
+close($OUT) or die "can't close $outfile: $!\n";
-#! /usr/bin/perl -w
+#!/usr/bin/perl
+# merge-versions.pl merges multiple .versions files from dak
+# and is released under the terms of the GNU GPL version 3, or any
+# later version, at your option. See the file README and COPYING for
+# more information.
+# Copyright 2017 by Don Armstrong <don@donarmstrong.com>.
+
+
+use warnings;
use strict;
-use File::Find;
-use Debbugs::Versions;
-use Debbugs::Versions::Dpkg;
-my %pkgs;
+use Getopt::Long;
+use Pod::Usage;
+
+=head1 NAME
+
+merge-versions.pl - merges multiple .versions files from dak
+
+=head1 SYNOPSIS
+
+merge-versions.pl [options]
+
+ Options:
+ --debug, -d debugging level (Default 0)
+ --help, -h display this help
+ --man, -m display manual
+
+=head1 OPTIONS
+
+=over
+
+=item B<--debug, -d>
+
+Debug verbosity. (Default 0)
+
+=item B<--help, -h>
+
+Display brief usage information.
+
+=item B<--man, -m>
+
+Display this manual.
+
+=back
+
+=head1 EXAMPLES
+
+merge-versions.pl
-sub search {
- return unless -f;
- my ($pkg) = split /_/;
- push @{$pkgs{$pkg}}, "$File::Find::dir/$_";
+=cut
+
+
+use vars qw($DEBUG);
+
+my %options = (debug => 0,
+ help => 0,
+ man => 0,
+ );
+
+GetOptions(\%options,
+ 'debug|d+','help|h|?','man|m');
+
+pod2usage() if $options{help};
+pod2usage({verbose=>2}) if $options{man};
+
+$DEBUG = $options{debug};
+
+my @USAGE_ERRORS;
+if (not @ARGV) {
+ push @USAGE_ERRORS,"You must provide at least one .versions file";
}
-find(\&search, 'cl-data');
-
-for my $pkg (sort keys %pkgs) {
- print STDERR "$pkg\n";
- my $tree = Debbugs::Versions->new(\&Debbugs::Versions::Dpkg::vercmp);
- for my $file (@{$pkgs{$pkg}}) {
- unless (open FILE, "< $file") {
- warn "can't open $file: $!\n";
- next;
- }
- $tree->load(*FILE);
- close FILE;
- }
- my $pkghash = substr $pkg, 0, 1;
- unless (-d "pkg/$pkghash") {
- unless (mkdir "pkg/$pkghash") {
- warn "can't mkdir pkg/$pkghash: $!\n";
- next;
- }
- }
- unless (open OUT, "> pkg/$pkghash/$pkg") {
- warn "can't open pkg/$pkghash/$pkg for writing: $!\n";
- next;
+pod2usage(join("\n",@USAGE_ERRORS)) if @USAGE_ERRORS;
+
+
+use strict;
+use File::Find;
+use Debbugs::Versions;
+use Debbugs::Versions::Dpkg;
+use Data::Printer;
+
+my $tree = Debbugs::Versions->new(\&Debbugs::Versions::Dpkg::vercmp);
+for my $ver_file (@ARGV) {
+ open(my $fh,'<',$ver_file) or
+ die "Unable to open $ver_file for reading: $!";
+ my $pkg;
+ my $versions = '';
+ while (<$fh>) {
+ my ($s_pkg,$ver) = $_ =~/^(\S+)\s*\(([^\)]+)\)/ or next;
+ $pkg = $s_pkg unless defined $pkg;
+ $versions .= ' ' if length $versions;
+ $versions .= $ver;
}
- $tree->save(*OUT);
- close OUT;
+ $versions .= "\n";
+ open (my $v_fh,'<',\$versions);
+ $tree->load($v_fh);
+ p $tree->{parent};
+ $tree->save(*STDOUT);
+ close($v_fh);
}
+
+
+
+
+__END__
+# Local Variables:
+# indent-tabs-mode: nil
+# cperl-indent-level: 4
+# End:
+