Gentoo Archives: gentoo-commits

From: "Mike Frysinger (vapier)" <vapier@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoolkit r701 - trunk/gentoolkit-dev/src/ekeyword
Date: Mon, 30 Nov 2009 22:58:55
Message-Id: E1NFFCl-0007Ac-Ke@stork.gentoo.org
1 Author: vapier
2 Date: 2009-11-30 22:58:51 +0000 (Mon, 30 Nov 2009)
3 New Revision: 701
4
5 Modified:
6 trunk/gentoolkit-dev/src/ekeyword/ekeyword
7 Log:
8 ekeyword: store keywords internally rather than using external diff to better handle multiline changes and output control simpler
9
10 Modified: trunk/gentoolkit-dev/src/ekeyword/ekeyword
11 ===================================================================
12 --- trunk/gentoolkit-dev/src/ekeyword/ekeyword 2009-11-12 20:03:31 UTC (rev 700)
13 +++ trunk/gentoolkit-dev/src/ekeyword/ekeyword 2009-11-30 22:58:51 UTC (rev 701)
14 @@ -7,12 +7,9 @@
15 # ekeyword: Update the KEYWORDS in an ebuild. For example:
16 #
17 # $ ekeyword ~alpha oaf-0.6.8-r1.ebuild
18 -# 12c12
19 -# < KEYWORDS="ppc sparc x86"
20 -# ---
21 -# > KEYWORDS="~alpha ppc sparc x86"
22 +# - ppc sparc x86
23 +# + ~alpha ppc sparc x86
24
25 -
26 my ($kw_re) = '^(?:([-~^]?)(\w[\w-]*)|([-^]\*))$';
27 my (@kw);
28
29 @@ -43,6 +40,8 @@
30 open O, ">$f.new" or die "Can't create $f.new: $!\n";
31 select O;
32
33 + my $keys_before;
34 + my $keys_after;
35 while (<I>) {
36 if (/^\s*KEYWORDS=/) {
37
38 @@ -53,6 +52,7 @@
39 $_ = join " ", $_, $next;
40 }
41 (my $quoted = $_) =~ s/^.*?["'](.*?)["'].*/$1/s;
42 + $keys_before = $quoted;
43
44 # replace -* with -STAR for our convenience below
45 $quoted =~ s/-\*/-STAR/;
46 @@ -109,6 +109,8 @@
47 $sa cmp $sb;
48 } split " ", $quoted;
49
50 + $keys_after = $quoted;
51 +
52 # re-insert quoted to KEYWORDS
53 s/(["']).*?["']/$1$quoted$1/;
54
55 @@ -122,7 +124,18 @@
56 close O;
57 select STDOUT;
58
59 - system "diff -U 0 $f $f.new | sed -n '/KEYWORDS=/s:^: :p'";
60 + if ($keys_before ne $keys_after) {
61 + # This gives uniform output, but actually seems to make
62 + # it harder to pick out differences, and doesn't work so
63 + # well when adding/removing keywords
64 + #$keys_before =~ s/(^| )/ /g;
65 + #$keys_before =~ s/ ([-~])/$1/g;
66 + #$keys_after =~ s/(^| )/ /g;
67 + #$keys_after =~ s/ ([-~])/$1/g;
68 + print " - $keys_before\n + $keys_after\n";
69 + #system "diff -U 0 $f $f.new | sed -n -r 's:^(.)[[:space:]]*KEYWORDS=\"(.*)\": \\1 \\2:p'";
70 + #system "diff -U 0 $f $f.new | sed -n '/KEYWORDS=/s:^: :p'";
71 + }
72 rename "$f.new", "$f" or die "Can't rename: $!\n";
73 $files++;
74 }