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 |
} |