]>
Commit | Line | Data |
---|---|---|
38573414 | 1 | #!/bin/sh |
2 | ||
89b20d1d ER |
3 | SPEC=$(basename "$1" .spec).spec |
4 | PACKAGE=$(basename "$SPEC" .spec) | |
5 | TOPDIR=$(rpm -E %_topdir) | |
6 | PACKAGEDIR=$TOPDIR/$PACKAGE | |
7 | SPECFILE="$TOPDIR/$PACKAGE/$SPEC" | |
38573414 | 8 | CLEANBUILDDIR="$HOME/PLD" |
89b20d1d | 9 | CIVIM=$PWD/civim |
38573414 | 10 | |
89b20d1d | 11 | if [ $# -ne 1 -o ! -d "$PACKAGEDIR" -o ! -f "$SPECFILE" ]; then |
38573414 | 12 | echo "spec file missing" |
13 | exit 1 | |
14 | fi | |
15 | ||
89b20d1d | 16 | if [ ! -x "$CIVIM" ]; then |
07d14879 ER |
17 | echo "civim missing" |
18 | exit 1 | |
19 | fi | |
20 | ||
38573414 | 21 | diffcol() |
22 | { | |
23 | # vim like diff colourization | |
24 | LC_ALL=en_US.UTF-8 gawk ' { | |
25 | split( $0, S, /\t/ ); | |
26 | $0 = S[ 1 ]; | |
27 | for ( i = 2; i in S; i++ ) { | |
28 | spaces = 7 - ( (length( $0 ) - 1) % 8 ); | |
29 | $0 = $0 "\xE2\x9E\x94"; | |
30 | for ( y = 0; y < spaces; y++ ) | |
31 | $0 = $0 "\xE2\x87\xBE"; | |
32 | $0 = $0 S[ i ]; | |
33 | } | |
34 | gsub( /\033/, "\033[44m^[\033[49m" ); | |
35 | cmd = ""; | |
36 | if ( sub( /^ /, "" ) ) | |
37 | cmd = " "; | |
38 | sub( /(\xE2\x9E\x94(\xE2\x87\xBE)*| )+$/, "\033[31;41m&\033[39;49m" ); | |
39 | gsub( /\xE2\x9E\x94(\xE2\x87\xBE)*/, "\033[7m&\033[27m" ); | |
40 | gsub( /\xE2\x87\xBE/, " " ); | |
41 | $0 = cmd $0; | |
42 | gsub( /\007/, "\033[44m^G\033[49m" ); | |
43 | gsub( /\r/, "\033[44m^M\033[49m" ); | |
44 | } | |
45 | /^(Index:|diff|---|\+\+\+) / { $0 = "\033[32m" $0 } | |
46 | /^@@ / { $0 = "\033[33m" $0 } | |
47 | /^-/ { $0 = "\033[35m" $0 } | |
48 | /^+/ { $0 = "\033[36m" $0 } | |
49 | { $0 = $0 "\033[0m"; print } | |
50 | ' "$@" | |
51 | } | |
52 | ||
74925fa3 | 53 | pause() |
54 | { | |
55 | echo "$*" | |
56 | echo -n "[Press ENTER to continue, ^C to abort] " | |
57 | read ans | |
58 | } | |
59 | ||
89b20d1d | 60 | cd $PACKAGEDIR |
38573414 | 61 | |
89b20d1d | 62 | git diff --color=auto $SPEC |
38573414 | 63 | |
89b20d1d | 64 | pause "Proceed ?" |
38573414 | 65 | |
89b20d1d ER |
66 | sed '/^# AUTO: /d' -i "$SPECFILE" |
67 | SIMPLE_DIFF="$(cd $PACKAGEDIR && git diff "$SPEC")" | |
38573414 | 68 | |
89b20d1d | 69 | ./adapter "$SPECFILE" |
38573414 | 70 | |
89b20d1d ER |
71 | diff=$(git diff $SPEC) |
72 | git diff --color=auto $SPEC | |
38573414 | 73 | |
9617c69b | 74 | ver=$(echo "$diff" | awk ' |
75 | /^\+Version/ { ver = $2 } | |
76 | /^\+%define[ \t]+[_a-zA-Z0-9]*ver/ { ver = $3 } | |
77 | END { print ver } | |
78 | ') | |
79 | rel=$(echo "$diff" | awk ' | |
80 | /^\+Release/ { rel = $2 } | |
81 | /^\+%define[ \t]+_?rel/ { rel = $3 } | |
82 | END { print rel } | |
83 | ') | |
84 | ||
85 | add=$(echo "$diff" | awk ' | |
86 | function s( n ) { sub(/}/,"",n); return n; } | |
87 | /^\+(%{[a-zA-Z0-9_]+:)?BuildRequires/ { add[ s( $2 ) ] = 1; }; | |
88 | /^-(%{[a-zA-Z0-9_]+:)?BuildRequires/ { del[ s( $2 ) ] = 1; }; | |
38573414 | 89 | END { for ( n in add ) { if ( !del[ n ] ) print n; } }' | |
9617c69b | 90 | perl -p -e 'chomp; push @a, $_; undef $_; END { print join ", ", sort @a } |
91 | ') | |
38573414 | 92 | |
9617c69b | 93 | del=$(echo "$diff" | awk ' |
94 | function s( n ) { sub(/}/,"",n); return n; } | |
95 | /^\+(%{[a-zA-Z0-9_]+:)?BuildRequires/ { add[ s( $2 ) ] = 1; }; | |
96 | /^-(%{[a-zA-Z0-9_]+:)?BuildRequires/ { del[ s( $2 ) ] = 1; }; | |
38573414 | 97 | END { for ( n in del ) { if ( !add[ n ] ) print n; } }' | |
9617c69b | 98 | perl -p -e 'chomp; push @a, $_; undef $_; END { print join ", ", sort @a } |
99 | ') | |
38573414 | 100 | |
101 | n="$(echo -e '\nn')" | |
102 | n="${n%%n}" | |
103 | msg="" | |
e5661ec7 | 104 | [ -n "$ver" ] && msg="$msg- updated to: $ver$n" |
105 | [ -n "$rel" ] && msg="$msg- release: $rel$n" | |
38573414 | 106 | [ -n "$add" ] && msg="$msg- BR: $add$n" |
107 | [ -n "$del" ] && msg="$msg- dropped BR: $del$n" | |
108 | ||
109 | echo | |
110 | echo "Message:" | |
111 | echo "$msg" | |
74925fa3 | 112 | pause "Commit ?" |
38573414 | 113 | |
114 | export COMMIT_MESSAGE="$msg" | |
115 | export COMMIT_PACKAGES="$SPECFILE" | |
89b20d1d ER |
116 | export VISUAL="$CIVIM" |
117 | git ci "$SPECFILE" | |
38573414 | 118 | |
89b20d1d | 119 | [ -n "$CLEANBUILDDIR" ] && rm -f $CLEANBUILDDIR/installed/$SPEC |