You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openresty/util/upgrade-patches.pl

56 lines
1.4 KiB
C

#!/usr/bin/env perl
use strict;
use warnings;
my $ver = shift or usage();
my $newver = shift or usage();
my @files = `find patches -name '*.patch'`;
for my $file (@files) {
chomp $file;
next unless $file =~ m{^patches/nginx/(?:$ver|$newver)/nginx-(?:$ver|$newver)-};
(my $newfile = $file) =~ s{nginx/$ver/}{nginx/$newver/}g;
$newfile =~ s/nginx-$ver-/nginx-$newver-/g;
if ($newfile ne $file && !-f $newfile) {
my $newdir = "patches/nginx/$newver";
unless (-d $newdir) {
system("mkdir -p $newdir") == 0
or die "failed to create directory $newdir: $!\n";
}
my $cmd = "cp $file $newfile";
system($cmd) == 0
or die "failed run command $cmd.\n";
$cmd = "git add $newfile";
system($cmd) == 0
or die "failed run command $cmd.\n";
}
my $cmd = "sed -i 's/\Q$ver\E/$newver/g' $newfile";
system($cmd) == 0
or die "failed to run command $cmd.\n";
my $oldver_int = version_to_int($ver);
my $newver_int = version_to_int($newver);
warn "$oldver_int => $newver_int\n";
$cmd = "sed -i 's/$oldver_int/$newver_int/g' $newfile";
system($cmd) == 0
or die "failed to run command $cmd.\n";
print "$file => $newfile\n";
}
sub usage {
die "Usage: $0 <old-version> <new-version>\n";
}
sub version_to_int {
my $ver = shift;
$ver =~ s/\.(\d+)/sprintf("%03d", $1)/eg;
$ver
}