summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYann E. MORIN" <yann.morin.1998@anciens.enib.fr>2009-10-27 18:34:13 (GMT)
committerYann E. MORIN" <yann.morin.1998@anciens.enib.fr>2009-10-27 18:34:13 (GMT)
commitd28227a914974b116391c308b114587fe023c3ab (patch)
tree841a3baf46f7a21d5f5580cf8da3d3793e96cb84
parent039ee6c1253e72b75c894ebdd99d915acc35106b (diff)
scripts: add sed expression to apply when renumbering patches
Some patchsets have superfluous members in their names (eg. the ones coming from Gentoo), so it can come in handy to pass a sed RE to strip them out of the final patch name. Also add a 'fake' mode, where the command will only be printed and not executed, so we can check beforehand if the rename will be OK.
-rwxr-xr-xscripts/patch-renumber.sh40
1 files changed, 26 insertions, 14 deletions
diff --git a/scripts/patch-renumber.sh b/scripts/patch-renumber.sh
index 7ea2aa1..95bae8f 100755
--- a/scripts/patch-renumber.sh
+++ b/scripts/patch-renumber.sh
@@ -9,33 +9,45 @@ myname="$0"
doUsage() {
cat <<_EOF_
-Usage: ${myname} <dir> <base> <inc>
- Will renumber all patches found in <dir>, starting at <base>, and with
- an increment of <inc>
- Eg.: patch-renumber patches/gcc/4.3.1 100 10
+Usage: ${myname} <dir> <base> <inc> [sed_re]
+ Will renumber all patches found in 'dir', starting at 'base', and with
+ an increment of 'inc'.
+ If 'sed_re' is given, it is interpreted as a valid sed expression, and
+ it will be applied to the patch name.
+ If the environment variable FAKE is set to 'y', then the command will
+ only be printed, and not executed (so you can check beforehand).
+ Eg.:
+ patch-renumber.sh patches/gcc/4.3.1 100 10
+ patch-renumber.sh patches/gcc/4.2.4 100 10 's/(all[_-])*(gcc[-_])*//;'
_EOF_
}
-[ $# -eq 3 ] || { doUsage; exit 1; }
+[ $# -lt 3 -o $# -gt 4 ] && { doUsage; exit 1; }
[ -d "${1}" ] || { doUsage; exit 1; }
dir="${1}"
cpt="${2}"
inc="${3}"
+sed_re="${4}"
case "$(LC_ALL=C hg id "${dir}" 2>/dev/null)" in
- "") CMD="mv -v";;
- *) CMD="hg mv";;
+ "") CMD="";;
+ *) CMD="hg";;
esac
-for p in "${dir}"/*.patch; do
+if [ "${FAKE}" = "y" ]; then
+ CMD="echo ${CMD}"
+fi
+
+for p in "${dir}"/*.patch*; do
[ -e "${p}" ] || { echo "No such file '${p}'"; exit 1; }
- newname="$(printf "%03d-%s" \
- "${cpt}" \
- "$(basename "${p}" \
- |"${sed}" -r -e 's/^[[:digit:]]+[-_]//' \
- )" \
+ newname="$(printf "%03d-%s" \
+ "${cpt}" \
+ "$( basename "${p}" \
+ |"${sed}" -r -e 's/^[[:digit:]]+[-_]//' \
+ -e "${sed_re}" \
+ )" \
)"
- [ "${p}" = "${dir}/${newname}" ] || ${CMD} "${p}" "${dir}/${newname}"
+ [ "${p}" = "${dir}/${newname}" ] || ${CMD} mv -v "${p}" "${dir}/${newname}"
cpt=$((cpt+inc))
done