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"
8 CLEANBUILDDIR="$HOME/PLD"
11 if [ $# -ne 1 -o ! -d "$PACKAGEDIR" -o ! -f "$SPECFILE" ]; then
12 echo "spec file missing"
16 if [ ! -x "$CIVIM" ]; then
23 # vim like diff colourization
24 LC_ALL=en_US.UTF-8 gawk ' {
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";
34 gsub( /\033/, "\033[44m^[\033[49m" );
36 if ( sub( /^ /, "" ) )
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/, " " );
42 gsub( /\007/, "\033[44m^G\033[49m" );
43 gsub( /\r/, "\033[44m^M\033[49m" );
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 }
56 echo -n "[Press ENTER to continue, ^C to abort] "
62 git diff --color=auto $SPEC
66 sed '/^# AUTO: /d' -i "$SPECFILE"
67 SIMPLE_DIFF="$(cd $PACKAGEDIR && git diff "$SPEC")"
71 diff=$(git diff $SPEC)
72 git diff --color=auto $SPEC
74 ver=$(echo "$diff" | awk '
75 /^\+Version/ { ver = $2 }
76 /^\+%define[ \t]+[_a-zA-Z0-9]*ver/ { ver = $3 }
79 rel=$(echo "$diff" | awk '
80 /^\+Release/ { rel = $2 }
81 /^\+%define[ \t]+_?rel/ { rel = $3 }
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; };
89 END { for ( n in add ) { if ( !del[ n ] ) print n; } }' |
90 perl -p -e 'chomp; push @a, $_; undef $_; END { print join ", ", sort @a }
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; };
97 END { for ( n in del ) { if ( !add[ n ] ) print n; } }' |
98 perl -p -e 'chomp; push @a, $_; undef $_; END { print join ", ", sort @a }
104 [ -n "$ver" ] && msg="$msg- updated to: $ver$n"
105 [ -n "$rel" ] && msg="$msg- release: $rel$n"
106 [ -n "$add" ] && msg="$msg- BR: $add$n"
107 [ -n "$del" ] && msg="$msg- dropped BR: $del$n"
114 export COMMIT_MESSAGE="$msg"
115 export COMMIT_PACKAGES="$SPECFILE"
116 export VISUAL="$CIVIM"
119 [ -n "$CLEANBUILDDIR" ] && rm -f $CLEANBUILDDIR/installed/$SPEC