# HG changeset patch # User Simon Howkins # Date 1257778733 0 # Node ID be1e3961af1c911eeb13c081356713c3fa86453f # Parent 1350a673dd5f7f72a7ed423cc1adf69ff2f82c12 Updated to parse options in a more standard way, added new options to allow a different path to the sources/sysdef in the earlier release, and to provide a usage message. diff -r 1350a673dd5f -r be1e3961af1c releaseAutomation/packageComparison.pl --- a/releaseAutomation/packageComparison.pl Mon Nov 09 14:27:03 2009 +0000 +++ b/releaseAutomation/packageComparison.pl Mon Nov 09 14:58:53 2009 +0000 @@ -16,11 +16,38 @@ use strict; use XML::Parser; +use Getopt::Long; -my $sourcesCsv = shift or die "First argument must be sources.csv file for build being built/released\n"; -my $sysDef = shift or die "Second argument must be system definition file\n"; -my $previousPdkLabel = shift or die "Third argument must be hg tag to compare against\n"; -defined shift and die "No more than three arguments please\n"; +my $sourcesCsv; # sources.csv file for this build +my $sysDef; # system definition file for this build +my $previousPdkLabel; # hg tag to compare against +my $prevSourcesCsv; # sources.csv file for baseline build, if different to this build +my $prevSysDef; # system definition file for baseline build, if different to this build + +GetOptions(( + 'sources=s' => \$sourcesCsv, + 'sysdef=s' => \$sysDef, + 'baseline=s' => \$previousPdkLabel, + 'prevSources=s' => \$prevSourcesCsv, + 'prevSysdef=s' => \$prevSysDef, +)); + +if (!$sourcesCsv || !$sysDef || !$previousPdkLabel) +{ + warn "Necessary argument(s) not supplied\n\n"; + usage(); + exit (1); +} + +if (@ARGV) +{ + warn "Don't know what to do with these arguments: @ARGV\n\n"; + usage(); + exit (1); +} + +$prevSourcesCsv ||= $sourcesCsv; +$prevSysDef ||= $sysDef; my $packages = { current => {}, previous => {} }; @@ -31,7 +58,7 @@ populate($packages->{current}, @manifest); # Load prev manifest -@manifest = `hg cat -r $previousPdkLabel $sourcesCsv`; +@manifest = `hg cat -r $previousPdkLabel $prevSourcesCsv`; populate($packages->{previous}, @manifest); my $xml = XML::Parser->new(Style => "Objects") or die; @@ -39,7 +66,7 @@ my $tree = $xml->parsefile($sysDef); populateNames($packages->{current}, $tree); # Load previous names from previous system definition -eval { $tree = $xml->parsestring(scalar `hg cat -r $previousPdkLabel $sysDef`) } or die $!; +eval { $tree = $xml->parsestring(scalar `hg cat -r $previousPdkLabel $prevSysDef`) } or die $!; populateNames($packages->{previous}, $tree); # Output release note info... @@ -205,4 +232,12 @@ $details->{$a}->{sortKey} cmp $details->{$b}->{sortKey}; } +sub usage +{ + warn < -sysdef= -baseline= [-prevSources=] [-prevSysdef=] + +EOT +}