]> git.pld-linux.org Git - packages/rpm-build-tools.git/blame - ci
- 4.10, package more tools
[packages/rpm-build-tools.git] / ci
CommitLineData
38573414 1#!/bin/sh
2
89b20d1d
ER
3SPEC=$(basename "$1" .spec).spec
4PACKAGE=$(basename "$SPEC" .spec)
5TOPDIR=$(rpm -E %_topdir)
6PACKAGEDIR=$TOPDIR/$PACKAGE
7SPECFILE="$TOPDIR/$PACKAGE/$SPEC"
38573414 8CLEANBUILDDIR="$HOME/PLD"
89b20d1d 9CIVIM=$PWD/civim
38573414 10
89b20d1d 11if [ $# -ne 1 -o ! -d "$PACKAGEDIR" -o ! -f "$SPECFILE" ]; then
38573414 12 echo "spec file missing"
13 exit 1
14fi
15
89b20d1d 16if [ ! -x "$CIVIM" ]; then
07d14879
ER
17 echo "civim missing"
18 exit 1
19fi
20
38573414 21diffcol()
22{
23 # vim like diff colourization
24LC_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 53pause()
54{
55 echo "$*"
56 echo -n "[Press ENTER to continue, ^C to abort] "
57 read ans
58}
59
89b20d1d 60cd $PACKAGEDIR
38573414 61
89b20d1d 62git diff --color=auto $SPEC
38573414 63
89b20d1d 64pause "Proceed ?"
38573414 65
89b20d1d
ER
66sed '/^# AUTO: /d' -i "$SPECFILE"
67SIMPLE_DIFF="$(cd $PACKAGEDIR && git diff "$SPEC")"
38573414 68
89b20d1d 69./adapter "$SPECFILE"
38573414 70
89b20d1d
ER
71diff=$(git diff $SPEC)
72git diff --color=auto $SPEC
38573414 73
9617c69b 74ver=$(echo "$diff" | awk '
75 /^\+Version/ { ver = $2 }
76 /^\+%define[ \t]+[_a-zA-Z0-9]*ver/ { ver = $3 }
77 END { print ver }
78')
79rel=$(echo "$diff" | awk '
80 /^\+Release/ { rel = $2 }
81 /^\+%define[ \t]+_?rel/ { rel = $3 }
82 END { print rel }
83')
84
85add=$(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 93del=$(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
101n="$(echo -e '\nn')"
102n="${n%%n}"
103msg=""
8a276141
ER
104[ -n "$ver" ] && msg="$msg- up to $ver$n"
105[ -n "$rel" -a "$rel" != "1" ] && msg="$msg- release $rel$n"
38573414 106[ -n "$add" ] && msg="$msg- BR: $add$n"
107[ -n "$del" ] && msg="$msg- dropped BR: $del$n"
108
109echo
110echo "Message:"
111echo "$msg"
74925fa3 112pause "Commit ?"
38573414 113
114export COMMIT_MESSAGE="$msg"
115export COMMIT_PACKAGES="$SPECFILE"
89b20d1d
ER
116export VISUAL="$CIVIM"
117git ci "$SPECFILE"
38573414 118
89b20d1d 119[ -n "$CLEANBUILDDIR" ] && rm -f $CLEANBUILDDIR/installed/$SPEC
This page took 0.058184 seconds and 4 git commands to generate.