yann@756: #!/bin/sh yann@756: # Yes, this intends to be a true POSIX script file. yann@1175: set -e yann@756: yann@756: myname="$0" yann@756: yann@1175: # Parse the tools' paths configuration yann@1175: . "paths.mk" yann@1175: yann@756: doUsage() { yann@756: cat <<_EOF_ yann@1608: Usage: ${myname} [sed_re] yann@1608: Will renumber all patches found in 'dir', starting at 'base', and with yann@1608: an increment of 'inc'. yann@1608: If 'sed_re' is given, it is interpreted as a valid sed expression, and yann@1608: it will be applied to the patch name. yann@1608: If the environment variable FAKE is set to 'y', then the command will yann@1608: only be printed, and not executed (so you can check beforehand). yann@1608: Eg.: yann@1608: patch-renumber.sh patches/gcc/4.3.1 100 10 yann@1608: patch-renumber.sh patches/gcc/4.2.4 100 10 's/(all[_-])*(gcc[-_])*//;' yann@756: _EOF_ yann@756: } yann@756: yann@1608: [ $# -lt 3 -o $# -gt 4 ] && { doUsage; exit 1; } yann@756: [ -d "${1}" ] || { doUsage; exit 1; } yann@756: yann@756: dir="${1}" yann@756: cpt="${2}" yann@756: inc="${3}" yann@1608: sed_re="${4}" yann@756: yann@1577: case "$(LC_ALL=C hg id "${dir}" 2>/dev/null)" in yann@1608: "") CMD="";; yann@1608: *) CMD="hg";; yann@756: esac yann@756: yann@1608: if [ "${FAKE}" = "y" ]; then yann@1608: CMD="echo ${CMD}" yann@1608: fi yann@1608: yann@1608: for p in "${dir}"/*.patch*; do yann@756: [ -e "${p}" ] || { echo "No such file '${p}'"; exit 1; } yann@1608: newname="$(printf "%03d-%s" \ yann@1608: "${cpt}" \ yann@1608: "$( basename "${p}" \ yann@1608: |"${sed}" -r -e 's/^[[:digit:]]+[-_]//' \ yann@1608: -e "${sed_re}" \ yann@1608: )" \ yann@1192: )" yann@1608: [ "${p}" = "${dir}/${newname}" ] || ${CMD} mv -v "${p}" "${dir}/${newname}" yann@756: cpt=$((cpt+inc)) yann@756: done