1 changed files with 96 additions and 0 deletions
@ -0,0 +1,96 @@
|
||||
#!/usr/bin/perl |
||||
## |
||||
## 00DEV/editspec -- Edit .spec files in OpenPKG CVS repository |
||||
## Copyright (c) 2000-2001 Cable & Wireless Deutschland GmbH |
||||
## Copyright (c) 2000-2001 Ralf S. Engelschall <rse@engelschall.com> |
||||
## |
||||
## Permission to use, copy, modify, and distribute this software for |
||||
## any purpose with or without fee is hereby granted, provided that |
||||
## the above copyright notice and this permission notice appear in all |
||||
## copies. |
||||
## |
||||
## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED |
||||
## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
||||
## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
||||
## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR |
||||
## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||
## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF |
||||
## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
||||
## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
||||
## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT |
||||
## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
||||
## SUCH DAMAGE. |
||||
## |
||||
|
||||
if ($#ARGV == -1) { |
||||
print STDERR "Usage: $0 <cmd> [<cmd> ...] [-- <pkg> [<pkg> ...]]\n"; |
||||
exit(1); |
||||
} |
||||
|
||||
my @cmd = (); |
||||
my @pkg = (); |
||||
my $iscmd = 1; |
||||
foreach my $arg (@ARGV) { |
||||
if ($iscmd and $arg eq '--') { |
||||
$iscmd = 0; |
||||
next; |
||||
} |
||||
if ($iscmd) { |
||||
push(@cmd, $arg); |
||||
} |
||||
else { |
||||
push(@pkg, $arg); |
||||
} |
||||
} |
||||
if ($#pkg == -1) { |
||||
foreach my $pkg (glob("*")) { |
||||
next if (not -d $pkg or not -f "$pkg/$pkg.spec"); |
||||
push(@pkg, $pkg); |
||||
} |
||||
} |
||||
|
||||
my $all = 0; |
||||
foreach my $p (@pkg) { |
||||
print "Package $p:\n"; |
||||
next if (not -d $p or not -f "$p/$p.spec"); |
||||
|
||||
open(SPEC, "<$p/$p.spec") || die; |
||||
my $spec = ''; |
||||
$spec .= $_ while (<SPEC>); |
||||
close(SPEC); |
||||
|
||||
$_ = $spec; |
||||
foreach $cmd (@cmd) { |
||||
eval $cmd; |
||||
} |
||||
|
||||
if ($spec ne $_) { |
||||
$spec = $_; |
||||
open(SPEC, ">$p/$p.spec.new") || die; |
||||
print SPEC $spec; |
||||
close(SPEC); |
||||
system("diff -u1 $p/$p.spec $p/$p.spec.new"); |
||||
my $ok; |
||||
if ($all) { |
||||
$ok = "yes"; |
||||
} |
||||
else { |
||||
print "Edit [a(ll)/Y(es)/n(o)]: "; |
||||
$ok = <STDIN>; |
||||
} |
||||
if ($ok =~ m/^(?:A|a)(?:ll)?\n?$/s) { |
||||
$ok = "yes"; |
||||
$all = 1; |
||||
} |
||||
if ($ok =~ m/^(?:Y|y)(?:es)?\n?$/s or $ok eq '') { |
||||
$spec =~ s|(\nRelease:\s+)(\d+)|$1 . sprintf("%d", $2+1)|se; |
||||
print "Ok: Edited $p/$p.spec\n"; |
||||
open(SPEC, ">$p/$p.spec") || die; |
||||
print SPEC $spec; |
||||
close(SPEC); |
||||
} |
||||
unlink("$p/$p.spec.new"); |
||||
} |
||||
} |
||||
|
Loading…
Reference in new issue