reorder-patches revision 10143
7945N/A#!/bin/bash
7945N/A
7945N/Aget_pnum () {
7945N/A echo $1 | sed -e 's/^\(.*\)-\([0-9][0-9]\)-\(.*\)$/\2/'
7945N/A}
7945N/A
7945N/Aget_comp () {
7945N/A echo $1 | sed -e 's/^\(.*\)-\([0-9][0-9]\)-\(.*\)$/\1/'
7945N/A}
7945N/A
7945N/Aget_pname () {
7945N/A echo $1 | sed -e 's/^\(.*\)-\([0-9][0-9]\)-\(.*\)$/\3/'
7945N/A}
7945N/A
7945N/Arename () {
7945N/A svn rename $1 $2
7945N/A if [ -f ../base-specs/$3.spec ]; then
7945N/A perl -pi -e "s/Patch(.*):(\s*)$1/Patch\$1:\$2$2/" ../base-specs/$3.spec
7945N/A else
7945N/A echo "WARNING: $3.spec not found"
7945N/A fi
7945N/A}
7945N/A
7945N/A# ask "question" variable_name "default answer"
7945N/Aask () {
7945N/A echo -n "$1"
7945N/A if [ ! -z $3 ]; then
7945N/A echo -n " [$3]: "
7945N/A else
7945N/A echo -n ": "
8451N/A fi
8451N/A
7945N/A read -e val
7945N/A if [ "x$val" = x ]; then
7945N/A eval "$2=\"$3\""
7945N/A else
7945N/A eval "$2=\"$val\""
7945N/A fi
7945N/A}
7945N/A
7945N/A# ask_yes_no "question" variable_name "default answer"
7945N/Aask_yes_no () {
7945N/A yes_no_repeat=yes
7945N/A while [ $yes_no_repeat = yes ]; do
7945N/A yes_no_repeat=no
7945N/A ask "${@}"
7945N/A eval "the_ans=\"\$$2\""
7945N/A case "$the_ans" in
7945N/A [yY]|[yY][eE][sS] )
7945N/A eval "$2=yes"
8451N/A ;;
7945N/A [nN]|[nN][oO] )
7945N/A eval "$2=no"
7945N/A ;;
7945N/A * )
7945N/A echo "Please answer yes or no"
7945N/A yes_no_repeat=yes
7945N/A esac
7945N/A done
7945N/A}
7945N/A
7945N/Ausage () {
7945N/A echo "Usage: $0 [options] [component...]"
7945N/A echo
echo "Run this script in the patches subdirectory to reorder"
echo "the patch numbers to be continuous and starting from 01"
echo
echo "If no components are specified, it'll check all of them."
echo "It does not change the Patch<n> and %patch<n> numbers"
echo "in the spec files, but updates the file names with the"
echo "new patch numbers."
echo
echo "Options:"
echo
echo " -f, --force don't ask for confirmation"
echo " -h, --help print this usage info"
}
FORCE=0
while [ $# -gt 0 ]; do
case $1 in
-f|--force )
FORCE=1
;;
-h|--help )
usage
exit 0
;;
-* )
echo "Unknown option: $1"
usage
exit 1
;;
* )
break
esac
done
mybasename=$(basename $(pwd))
if [ $mybasename != patches ]; then
echo "Run this script in the patches subdirectory"
exit 1
fi
if [ $# -gt 0 ]; then
PLIST=
for comp in $*; do
comp_PLIST=$(eval echo $comp-[0-9][0-9]-*.diff)
n_p_1st=$(echo $comp_PLIST | cut -f1 -d' ')
if [ -f $n_p_1st ]; then
PLIST="$PLIST $comp_PLIST"
else
echo "No patches found for component $comp"
fi
done
else
PLIST=$(eval echo *-[0-9][0-9]-*.diff)
fi
prev_comp=xxNoNexx
patches_renamed=0
for patch in $PLIST; do
comp=`get_comp $patch`
pnum=`get_pnum $patch`
pname=`get_pname $patch`
if [ $comp != $prev_comp ]; then
ord=01
if [ $prev_comp != xxNoNexx -a $patches_renamed = 0 ]; then
echo "No patches need renumbering for component $prev_comp"
fi
patches_renamed=0
else
ord=`expr $ord + 1`
ord=`echo 0$ord | sed -e 's/.*\(..\)$/\1/'`
fi
if [ $pnum != $ord ]; then
if [ $FORCE = 0 ]; then
ask_yes_no "Rename $patch to $comp-$ord-$pname?" ans "yes"
if [ $ans = yes ]; then
rename $patch $comp-$ord-$pname $comp
fi
else
rename $patch $comp-$ord-$pname $comp
fi
fi
prev_comp=$comp
done
if [ $prev_comp != xxNoNexx -a $patches_renamed = 0 ]; then
echo "No patches need renumbering for component $prev_comp"
fi