diff --git a/versionchanger.pl b/versionchanger.pl index 9dffd2d2..c1b7ab36 100644 --- a/versionchanger.pl +++ b/versionchanger.pl @@ -1,185 +1,195 @@ -#!/usr/bin/perl - -our %arguments = -( - 'config' => 'modules.versions', - 'major' => '1', - 'minor' => '0', - 'revision' => '0', - 'build' => undef, - 'svnrev' => 'global', - 'path' => '', - 'modules' => '', -); - -my $arg; -foreach $arg (@ARGV) -{ - $arg =~ s/--//; - @arg = split(/=/, $arg); - $arguments{$arg[0]} = $arg[1]; -} - -our (%allowed); -if ($arguments{'modules'} ne "") -{ - my @l = split(/,/, $arguments{'modules'}); - my $i; - - for ($i=0; $i<=$#l; $i++) - { - $allowed{$l[$i]} = 1; - } -} else { - $allowed{'*'} = 1; -} - -#Set up path info -if ($arguments{'path'} ne "") -{ - if (!(-d $arguments{'path'})) - { - die "Unable to find path: " . $arguments{'path'} ."\n"; - } - chdir($arguments{'path'}); -} - -if (!open(CONFIG, $arguments{'config'})) -{ - die "Unable to open config file for reading: " . $arguments{'config'} . "\n"; -} - -our %modules; -my $cur_module = undef; -my $line; -while () -{ - chomp; - $line = $_; - if ($line =~ /^\[([^\]]+)\]$/) - { - $cur_module = $1; - next; - } - if (!$cur_module) - { - next; - } - if ($line =~ /^([^=]+) = (.+)$/) - { - $modules{$cur_module}{$1} = $2; - } -} - -close(CONFIG); - -#Copy global configuration options... -if (exists($modules{'PRODUCT'})) -{ - if (exists($modules{'PRODUCT'}{'major'})) - { - $arguments{'major'} = $modules{'PRODUCT'}{'major'}; - } - if (exists($modules{'PRODUCT'}{'minor'})) - { - $arguments{'minor'} = $modules{'PRODUCT'}{'minor'}; - } - if (exists($modules{'PRODUCT'}{'revision'})) - { - $arguments{'revision'} = $modules{'PRODUCT'}{'revision'}; - } - if (exists($modules{'PRODUCT'}{'svnrev'})) - { - $arguments{'svnrev'} = $modules{'PRODUCT'}{'svnrev'}; - } -} - -#Get the global SVN revision if we have none -my $rev; -if ($arguments{'build'} == undef) -{ - $rev = GetRevision(undef); -} else { - $rev = int($arguments{'build'}); -} - -my $major = $arguments{'major'}; -my $minor = $arguments{'minor'}; -my $revision = $arguments{'revision'}; -my $svnrev = $arguments{'svnrev'}; - -#Go through everything now -my $mod_i; -while ( ($cur_module, $mod_i) = each(%modules) ) -{ - #Skip the magic one - if ($cur_module eq "PRODUCT") - { - next; - } - if (!$allowed{'*'} && !$allowed{$cur_module}) - { - next; - } - #Prepare path - my %mod = %{$mod_i}; - my $infile = $mod{'in'}; - my $outfile = $mod{'out'}; - if ($mod{'folder'}) - { - if (!(-d $mod{'folder'})) - { - die "Folder " . $mod{'folder'} . " not found.\n"; - } - $infile = $mod{'folder'} . '/' . $infile; - $outfile = $mod{'folder'} . '/' . $outfile; - } - if (!(-f $infile)) - { - die "File $infile is not a file.\n"; - } - my $global_rev = $rev; - my $local_rev = GetRevision($mod{'folder'}); - if ($arguments{'svnrev'} eq 'local') - { - $global_rev = $local_rev; - } - #Start rewriting - open(INFILE, $infile) or die "Could not open file for reading: $infile\n"; - open(OUTFILE, '>'.$outfile) or die "Could not open file for writing: $outfile\n"; - while () - { - s/\$PMAJOR\$/$major/g; - s/\$PMINOR\$/$minor/g; - s/\$PREVISION\$/$revision/g; - s/\$GLOBAL_BUILD\$/$rev/g; - s/\$LOCAL_BUILD\$/$local_rev/g; - print OUTFILE $_; - } - close(OUTFILE); - close(INFILE); -} - -sub GetRevision -{ - my ($path)=(@_); - my $rev; - if (!$path) - { - $rev = `svnversion --committed`; - } else { - $rev = `svnversion --committed $path`; - } - if ($rev =~ /exported/) - { - die "Path specified is not a working copy\n"; - } elsif ($rev =~ /(\d+):(\d+)/) { - $rev = int($2); - } elsif ($rev =~ /(\d+)/) { - $rev = int($1); - } else { - die "Unknown svnversion response: $rev\n"; - } - return $rev; -} - +#!/usr/bin/perl + +our %arguments = +( + 'config' => 'modules.versions', + 'major' => '1', + 'minor' => '0', + 'revision' => '0', + 'build' => undef, + 'svnrev' => 'global', + 'path' => '', + 'modules' => '', +); + +my $arg; +foreach $arg (@ARGV) +{ + $arg =~ s/--//; + @arg = split(/=/, $arg); + $arguments{$arg[0]} = $arg[1]; +} + +our (%allowed); +if ($arguments{'modules'} ne "") +{ + my @l = split(/,/, $arguments{'modules'}); + my $i; + + for ($i=0; $i<=$#l; $i++) + { + $allowed{$l[$i]} = 1; + } +} else { + $allowed{'*'} = 1; +} + +#Set up path info +if ($arguments{'path'} ne "") +{ + if (!(-d $arguments{'path'})) + { + die "Unable to find path: " . $arguments{'path'} ."\n"; + } + chdir($arguments{'path'}); +} + +if (!open(CONFIG, $arguments{'config'})) +{ + die "Unable to open config file for reading: " . $arguments{'config'} . "\n"; +} + +our %modules; +my $cur_module = undef; +my $line; +while () +{ + chomp; + $line = $_; + if ($line =~ /^\[([^\]]+)\]$/) + { + $cur_module = $1; + next; + } + if (!$cur_module) + { + next; + } + if ($line =~ /^([^=]+) = (.+)$/) + { + $modules{$cur_module}{$1} = $2; + } +} + +close(CONFIG); + +#Copy global configuration options... +if (exists($modules{'PRODUCT'})) +{ + if (exists($modules{'PRODUCT'}{'major'})) + { + $arguments{'major'} = $modules{'PRODUCT'}{'major'}; + } + if (exists($modules{'PRODUCT'}{'minor'})) + { + $arguments{'minor'} = $modules{'PRODUCT'}{'minor'}; + } + if (exists($modules{'PRODUCT'}{'revision'})) + { + $arguments{'revision'} = $modules{'PRODUCT'}{'revision'}; + } + if (exists($modules{'PRODUCT'}{'svnrev'})) + { + $arguments{'svnrev'} = $modules{'PRODUCT'}{'svnrev'}; + } +} + +#Get the global SVN revision if we have none +my $rev; +if ($arguments{'build'} == undef) +{ + $rev = GetRevision(undef); +} else { + $rev = int($arguments{'build'}); +} + +my $major = $arguments{'major'}; +my $minor = $arguments{'minor'}; +my $revision = $arguments{'revision'}; +my $svnrev = $arguments{'svnrev'}; + +#Go through everything now +my $mod_i; +while ( ($cur_module, $mod_i) = each(%modules) ) +{ + #Skip the magic one + if ($cur_module eq "PRODUCT") + { + next; + } + if (!$allowed{'*'} && !$allowed{$cur_module}) + { + next; + } + #Prepare path + my %mod = %{$mod_i}; + my $infile = $mod{'in'}; + my $outfile = $mod{'out'}; + if ($mod{'folder'}) + { + if (!(-d $mod{'folder'})) + { + die "Folder " . $mod{'folder'} . " not found.\n"; + } + $infile = $mod{'folder'} . '/' . $infile; + $outfile = $mod{'folder'} . '/' . $outfile; + } + if (!(-f $infile)) + { + die "File $infile is not a file.\n"; + } + my $global_rev = $rev; + my $local_rev; + + if ($arguments{'build'} == undef) + { + $local_rev = GetRevision($mod{'folder'}); + } + else + { + $local_rev = $rev; + } + + if ($arguments{'svnrev'} eq 'local') + { + $global_rev = $local_rev; + } + #Start rewriting + open(INFILE, $infile) or die "Could not open file for reading: $infile\n"; + open(OUTFILE, '>'.$outfile) or die "Could not open file for writing: $outfile\n"; + while () + { + s/\$PMAJOR\$/$major/g; + s/\$PMINOR\$/$minor/g; + s/\$PREVISION\$/$revision/g; + s/\$GLOBAL_BUILD\$/$rev/g; + s/\$LOCAL_BUILD\$/$local_rev/g; + print OUTFILE $_; + } + close(OUTFILE); + close(INFILE); +} + +sub GetRevision +{ + my ($path)=(@_); + my $rev; + if (!$path) + { + $rev = `svnversion --committed`; + } else { + $rev = `svnversion --committed $path`; + } + if ($rev =~ /exported/) + { + die "Path specified is not a working copy\n"; + } elsif ($rev =~ /(\d+):(\d+)/) { + $rev = int($2); + } elsif ($rev =~ /(\d+)/) { + $rev = int($1); + } else { + die "Unknown svnversion response: $rev\n"; + } + return $rev; +} +