During quilt based development, it is sometimes necessary to reorder patch files, which can become a tedious process as the patch list gets bigger. This script can help when doing such operations, by allowing to increment or decrement the number of multiple patch files at once:
$ ./scripts/patch-rename.sh -i 5 target/linux/generic/1* Add 5 to all the prefix numbers of all the patch files specified as an argument. Signed-off-by: Mathieu Olivari <[email protected]> --- scripts/patch-rename.sh | 66 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100755 scripts/patch-rename.sh diff --git a/scripts/patch-rename.sh b/scripts/patch-rename.sh new file mode 100755 index 0000000..011d179 --- /dev/null +++ b/scripts/patch-rename.sh @@ -0,0 +1,66 @@ +#!/bin/bash + +usage() { + echo "Usage: `basename $0` [ -i addval ] [ -d decval ] xxx.patch yyy.patch ..." + echo -e "\t -i ==> increment patch files by \"addval\"" + echo -e "\t -d ==> decrement patch files by \"decval\"" + exit 1 +} + +_do_rename() { + local mod=$1 + local op=$2 + local file=$3 + local oldval newval + + [ -f $file ] || { echo "Can't find file: $file"; exit 1; } + + oldval=$(echo $file | sed 's/.*\/\([0-9]*\)-[^\/]*/\1/') + digits=${#oldval} + newval=$((${oldval##0*0} $op $mod)) + # Pad newval to the previous number of characters + newval=$(printf "%0${#oldval}d" $newval) + rename "s/$oldval/$newval/" $file || { \ + echo "Can't rename file: $file\n"; \ + exit 1; \ + } +} + +dec_patches() { + local decval=$1; shift + # process the lowest patch first to avoid having conflicting numbers + local patchlist=$(echo $@ | sort -n) + local oldval newval + + for p in ${patchlist}; do + _do_rename $decval - $p + done +} + +inc_patches() { + local incval=$1; shift + # process the highest patch first to avoid having conflicting numbers + local patchlist=$(echo $@ | sort -nr) + local oldval newval + + for p in ${patchlist}; do + _do_rename $incval + $p + done +} + +while getopts "i:d:" OPTION; do + case $OPTION in + i ) INCVAL=$OPTARG;; + d ) DECVAL=$OPTARG;; + * ) usage;; + esac +done + +shift $((OPTIND-1)) +PATCH_LIST=$@ + +# If the user didn't provide any file, show the usage information +[ ${#PATCH_LIST} == 0 ] && usage + +[ -n "$INCVAL" ] && inc_patches $INCVAL $PATCH_LIST +[ -n "$DECVAL" ] && dec_patches $DECVAL $PATCH_LIST -- 2.1.4 _______________________________________________ openwrt-devel mailing list [email protected] https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
