]> git.donarmstrong.com Git - debbugs.git/commitdiff
start rewriting merge versions don/merge_versions_rewrite
authorDon Armstrong <don@donarmstrong.com>
Fri, 2 Feb 2018 01:24:47 +0000 (17:24 -0800)
committerDon Armstrong <don@donarmstrong.com>
Fri, 2 Feb 2018 01:24:47 +0000 (17:24 -0800)
 + This still needs a test suite which it does not have

examples/debian/versions/merge-one-version
examples/debian/versions/merge-versions.pl

index 7be6f38a198ac2c3305667d86ef51c00c0ec7d09..e35055639cf8c21d92c81778b1b628b410257996 100755 (executable)
@@ -23,13 +23,15 @@ unless (-d "$root/$pkghash") {
     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";
index 057eb19df1dbab38b7b70231491ba32d19b823cf..aefe1952870297f824529d0a9291b594e1c3360c 100755 (executable)
-#! /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:
+