#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-RCSID='$Id$'
-r=${RCSID#* * }
-rev=${r%% *}
-VERSION="v0.31/$rev"
+REVISION=1.50
+VERSION="v0.35/$REVISION"
VERSIONSTRING="\
Adapter adapts .spec files for PLD Linux.
-$VERSION (C) 1999-2009 Free Penguins".
+$VERSION (C) 1999-2013 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
+usage="Usage: $PROGRAM [FLAGS] SPECFILEs
-s|--no-sort|--skip-sort
skip BuildRequires, Requires sorting
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
+while :; do
case "$1" in
-h|--help)
- echo 2>&1 "$usage"
+ echo 2>&1 "$usage"
exit 1
;;
-s|--no-sort|--skip-sort)
diffcol()
{
- # vim like diff colourization
- sed -e '
- s,\e,\e[44m^[\e[49m,g;
- s,\a,\e[44m^G\e[49m,g;
- s,^\(Index:\|diff\|---\|+++\) .*$,\e[32m&,;
- s,^@@ ,\e[33m&,g;
- s,^-,\e[35m&,;
- s,^+,\e[36m&,;
- s,\r,\e[44m^M\e[49m,g;
- s, , ,g;
- s,\([^[:space:]]\)\([[:space:]]\+\)$,\1\e[41m\2\e[49m,g;
- s,$,\e[0m,
- ' "$@"
+ # 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" );
+}
+/^(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;
_desktopdir
_pixmapsdir
_javadir
+ _pkgconfigdir
+ _npkgconfigdir
+ _localedir
perl_sitearch
perl_archlib
py_scriptdir
py_ver
+ py3_sitescriptdir
+ py3_sitedir
+ py3_scriptdir
+ py3_ver
+
ruby_archdir
- ruby_ridir
- ruby_rubylibdir
+ ruby_libdir
+ ruby_sitedir
ruby_sitearchdir
ruby_sitelibdir
+ ruby_vendordir
+ ruby_vendorarchdir
+ ruby_vendorlibdir
+ ruby_rubylibdir
ruby_rdocdir
+ ruby_ridir
php_pear_dir
php_data_dir
tmpdir
+
+ systemdunitdir
+ systemdtmpfilesdir
"
eval_expr=""
for macro in $macros; do
export _cvsmailfeedback='%{?_cvsmailfeedback}%{!?_cvsmailfeedback:PLD Team <feedback@pld-linux.org>}'
"
+ export ADAPTER_REVISION=$REVISION
+
eval $(rpm --eval "$(echo -e $eval_expr)")
}
adapterize() {
+ local SPECFILE="$1"
+ [ -f "$SPECFILE" ] || SPECFILE="$(basename $SPECFILE .spec).spec"
+
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
elif [ "$(diff --brief $SPECFILE $tmp)" ]; then
diff -u $SPECFILE $tmp > $tmp.diff
if [ -t 1 ]; then
- diffcol $tmp.diff | less -r
+ diffcol $tmp.diff | $PAGER
while : ; do
echo -n "Accept? (Yes, No, Confirm each chunk)? "
read ans
[cC]) # confirm each chunk
diff2hunks $tmp.diff
for t in $(ls $tmp-*.diff); do
- diffcol $t | less -r
+ diffcol $t | $PAGER
echo -n "Accept? (Yes, [N]o, Quit)? "
read ans
case "$ans" in
[yYoO]) # y0 mama
- patch < $t
+ patch -p0 < $t
;;
[Q]) # Abort
break
cat $tmp.diff
fi
else
- echo "The SPEC is perfect ;)"
+ echo "The spec $SPECFILE is perfect ;)"
fi
rm -rf $workdir
}
-SPECFILE="$1"
-[ -f "$SPECFILE" ] || SPECFILE="$(basename $SPECFILE .spec).spec"
-
-if [ $# -ne 1 -o ! -f "$SPECFILE" ]; then
+if [ $# -eq 0 ]; then
echo "$usage"
exit 1
fi
-adapterize
+for SPECFILE in "$@"; do
+ adapterize $SPECFILE
+done
+
+# vim: ts=4:sw=4