X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=adapter.sh;h=44a4ee28f296a0d8370e89fb25bfe37bcf273ba4;hb=refs%2Ftags%2Fauto%2Fth%2Frpm-build-tools-4.5-3;hp=cb698ab3ebb0e9573e32deba3a4f39a0bc043843;hpb=f17d6bd1180a7636437bd93d0e9dfe1a862aa14b;p=packages%2Frpm-build-tools.git diff --git a/adapter.sh b/adapter.sh old mode 100644 new mode 100755 index cb698ab..44a4ee2 --- a/adapter.sh +++ b/adapter.sh @@ -13,15 +13,14 @@ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # RCSID='$Id$' -r=${RCSID#* * } -rev=${r%% *} -VERSION="v0.35/$rev" +REVISION=${RCSID#* * } REVISION=${REVISION%% *} +VERSION="v0.35/$REVISION" VERSIONSTRING="\ Adapter adapts .spec files for PLD Linux. -$VERSION (C) 1999-2009 Free Penguins". +$VERSION (C) 1999-2010 Free Penguins". PROGRAM=${0##*/} -dir=$(d=$0; [ -L "$d" ] && d=$(readlink "$d"); dirname "$d") +dir=$(d=$0; [ -L "$d" ] && d=$(readlink -f "$d"); dirname "$d") adapter=$dir/adapter.awk usage="Usage: $PROGRAM [FLAGS] SPECFILE @@ -47,13 +46,25 @@ if [ ! -x /usr/bin/patch ]; then exit 1 fi +[ -n "$PAGER" ] || PAGER="/usr/bin/less -r" + +if [ -n "$CONFIG_DIR" ]; then + USER_CFG="$CONFIG_DIR/.adapterrc" +elif [ -n "$HOME_ETC" ]; then + USER_CFG="$HOME_ETC/.adapterrc" +else + USER_CFG=~/.adapterrc +fi + +[ -f $USER_CFG ] && . $USER_CFG + t=$(getopt -o hsomdaV --long help,version,sort,sort-br,no-macros,skip-macros,skip-desc,skip-defattr -n "$PROGRAM" -- "$@") || exit $? eval set -- "$t" while true; do case "$1" in -h|--help) - echo 2>&1 "$usage" + echo 2>&1 "$usage" exit 1 ;; -s|--no-sort|--skip-sort) @@ -89,36 +100,42 @@ done diffcol() { - # vim like diff colourization - sed -e ' - s,,^[,g; - s,,^G,g; - s,^\(Index:\|diff\|---\|+++\) .*$,&,; - s,^@@ ,&,g; - s,^-,&,; - s,^+,&,; - s,\r,^M,g; - s, , ,g; - s,\([^[:space:]]\)\([[:space:]]\+\)$,\1\2,g; - s,$,, - ' "$@" + # vim like diff colourization +LC_ALL=en_US.UTF-8 gawk ' { + split( $0, S, /\t/ ); + $0 = S[ 1 ]; + for ( i = 2; i in S; i++ ) { + spaces = 7 - ( (length( $0 ) - 1) % 8 ); + $0 = $0 "\xE2\x9E\x94"; + for ( y = 0; y < spaces; y++ ) + $0 = $0 "\xE2\x87\xBE"; + $0 = $0 S[ i ]; + } + gsub( /\033/, "\033[44m^[\033[49m" ); + cmd = ""; + if ( sub( /^ /, "" ) ) + cmd = " "; + sub( /(\xE2\x9E\x94(\xE2\x87\xBE)*| )+$/, "\033[31;41m&\033[39;49m" ); + gsub( /\xE2\x9E\x94(\xE2\x87\xBE)*/, "\033[7m&\033[27m" ); + gsub( /\xE2\x87\xBE/, " " ); + # uncomment if you do not like utf-8 arrow + # gsub( /\xE2\x9E\x94/, ">" ); + $0 = cmd $0; + gsub( /\007/, "\033[44m^G\033[49m" ); + gsub( /\r/, "\033[44m^M\033[49m" ); } - -showdiff() -{ - l=$(cat $1 | wc -l) - eval $(resize) # get terminal size - if [ $l -gt $LINES ]; then - diffcol $1 | less -r - else - diffcol $1 - fi +/^(Index:|diff|---|\+\+\+) / { $0 = "\033[32m" $0 } +/^@@ / { $0 = "\033[33m" $0 } +/^-/ { $0 = "\033[35m" $0 } +/^+/ { $0 = "\033[36m" $0 } +{ $0 = $0 "\033[0m"; print } +' "$@" } diff2hunks() { - # diff2hunks orignally by dig - perl -e ' + # diff2hunks orignally by dig + perl -e ' #! /usr/bin/perl -w use strict; @@ -176,6 +193,9 @@ import_rpm_macros() { _desktopdir _pixmapsdir _javadir + _pkgconfigdir + _npkgconfigdir + _localedir perl_sitearch perl_archlib @@ -189,6 +209,11 @@ import_rpm_macros() { py_scriptdir py_ver + py3_sitescriptdir + py3_sitedir + py3_scriptdir + py3_ver + ruby_archdir ruby_ridir ruby_rubylibdir @@ -199,6 +224,9 @@ import_rpm_macros() { php_pear_dir php_data_dir tmpdir + + systemdunitdir + systemdtmpfilesdir " eval_expr="" for macro in $macros; do @@ -213,19 +241,21 @@ import_rpm_macros() { export _cvsmailfeedback='%{?_cvsmailfeedback}%{!?_cvsmailfeedback:PLD Team }' " + export ADAPTER_REVISION=$REVISION + eval $(rpm --eval "$(echo -e $eval_expr)") } adapterize() { local workdir - workdir=$(mktemp -d ${TMPDIR:-/tmp}/adapter-XXXXXX) || exit + workdir=$(mktemp -d ${TMPDIR:-/tmp}/adapter-XXXXXX) || exit $? awk=gawk - local tmp=$workdir/$(basename $SPECFILE) || exit + local tmp=$workdir/$(basename $SPECFILE) || exit $? import_rpm_macros - LC_ALL=en_US.UTF-8 $awk -f $adapter $SPECFILE > $tmp || exit + LC_ALL=en_US.UTF-8 $awk -f $adapter $SPECFILE > $tmp || exit $? if [ "$outputonly" = 1 ]; then cat $tmp @@ -233,7 +263,7 @@ adapterize() { elif [ "$(diff --brief $SPECFILE $tmp)" ]; then diff -u $SPECFILE $tmp > $tmp.diff if [ -t 1 ]; then - showdiff $tmp.diff + diffcol $tmp.diff | $PAGER while : ; do echo -n "Accept? (Yes, No, Confirm each chunk)? " read ans @@ -246,7 +276,7 @@ adapterize() { [cC]) # confirm each chunk diff2hunks $tmp.diff for t in $(ls $tmp-*.diff); do - showdiff $t + diffcol $t | $PAGER echo -n "Accept? (Yes, [N]o, Quit)? " read ans case "$ans" in