25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

96 lines
2.7 KiB

#!/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");
}
}