summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoragriffis <agriffis@gentoo.org>2004-04-09 15:31:02 +0000
committeragriffis <agriffis@gentoo.org>2004-04-09 15:31:02 +0000
commitef3d183d5bfcadc1edfd4c4446606dee8066f2f6 (patch)
treebde2de73ef48a2b8ef78225e8acb0be07002fd42
parent2e5d85ab88f78283ed64f6168f7f9ccbb3b3dec7 (diff)
downloadgentoolkit-ef3d183d5bfcadc1edfd4c4446606dee8066f2f6.tar.gz
Add ability to modify all keywords via all, ~all, or -all, for example: ekeyword -all ~alpha ia64 blah.ebuild
svn path=/; revision=101
-rw-r--r--trunk/src/ekeyword/ChangeLog4
-rw-r--r--trunk/src/ekeyword/ekeyword19
2 files changed, 21 insertions, 2 deletions
diff --git a/trunk/src/ekeyword/ChangeLog b/trunk/src/ekeyword/ChangeLog
index b3c4cff..3ab0d56 100644
--- a/trunk/src/ekeyword/ChangeLog
+++ b/trunk/src/ekeyword/ChangeLog
@@ -1,3 +1,7 @@
+09 Apr 2004 Aron Griffis <agriffis@gentoo.org>
+ * Add ability to modify all keywords via all, ~all, or -all, for
+ example: ekeyword -all ~alpha ia64 blah.ebuild
+
31 Mar 2004 Aron Griffis <agriffis@gentoo.org>
* Fix bug 28426 with patch from Mr_Bones_ to keep ekeyword from confusing
ppc and ppc64
diff --git a/trunk/src/ekeyword/ekeyword b/trunk/src/ekeyword/ekeyword
index be9cd64..4845c38 100644
--- a/trunk/src/ekeyword/ekeyword
+++ b/trunk/src/ekeyword/ekeyword
@@ -16,7 +16,7 @@ my ($kw_re) = '^[-~]?\w+$';
# make sure the cmdline consists of keywords and ebuilds
unless (@ARGV > 1 && $ARGV[0] =~ /$kw_re/o) {
- die "syntax: ekeyword { arch | ~arch | -arch } ebuild...\n"
+ die "syntax: ekeyword { arch | ~[arch] | -[arch] } ebuild...\n"
}
for my $a (@ARGV) {
next if $a =~ /$kw_re/o; # keyword
@@ -38,7 +38,22 @@ for my $f (@ARGV) {
/^KEYWORDS/ or print, next;
for my $k (@kw) {
(my $arch = $k) =~ s/^[-~]//;
- s/[-~]?$arch\b/$k/ || s/(.*?['"].*?)\s*(?=['"])/$1 $k/;
+ if ($arch eq 'all') {
+ # remove "all" so that only leader is left (blank, ~ or -)
+ $k =~ s/all//;
+
+ # extract the quoted section from KEYWORDS
+ (my $quoted = $_) =~ s/^.*["'](.*?)["'].*/$1/s;
+
+ # modify every keyword in the list
+ $quoted =~ s/(^|\s)[-~]?(?=\w)/$1$k/g;
+
+ # re-insert to KEYWORDS
+ s/(["']).*?["']/$1$quoted$1/;
+ } else {
+ # modify just one keyword
+ s/[-~]?$arch\b/$k/ || s/(.*?['"].*?)\s*(?=['"])/$1 $k/;
+ }
}
print $_, <I> or die "Can't write $f.new: $!\n";
}