summaryrefslogtreecommitdiff
path: root/scripts/patch-renumber.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/patch-renumber.sh')
-rwxr-xr-xscripts/patch-renumber.sh56
1 files changed, 33 insertions, 23 deletions
diff --git a/scripts/patch-renumber.sh b/scripts/patch-renumber.sh
index 95bae8f..08ec1be 100755
--- a/scripts/patch-renumber.sh
+++ b/scripts/patch-renumber.sh
@@ -9,37 +9,47 @@ myname="$0"
doUsage() {
cat <<_EOF_
-Usage: ${myname} <dir> <base> <inc> [sed_re]
- Will renumber all patches found in 'dir', starting at 'base', and with
- an increment of 'inc'.
+Usage: ${myname} <src_dir> <dst_dir> <base> <inc> [sed_re]
+ Renumbers all patches found in 'src_dir', starting at 'base', with an
+ increment of 'inc', and puts the renumbered patches in 'dst_dir'.
+ Leading digits are replaced with the new indexes, and a subsequent '_'
+ is replaced with a '-'.
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).
+ is be applied to the patch name.
+ If the environment variable FAKE is set to 'y', then nothing gets done,
+ the command to run is only be printed, and not executed (so you can
+ check beforehand).
+ 'dst_dir' must not yet exist.
Eg.:
- patch-renumber.sh patches/gcc/4.3.1 100 10
- patch-renumber.sh patches/gcc/4.2.4 100 10 's/(all[_-])*(gcc[-_])*//;'
+ patch-renumber.sh patches/gcc/4.2.3 patches/gcc/4.2.4 100 10
+ patch-renumber.sh /some/dir/my-patches patches/gcc/4.3.1 100 10 's/(all[_-])*(gcc[-_])*//;'
_EOF_
}
-[ $# -lt 3 -o $# -gt 4 ] && { doUsage; exit 1; }
-[ -d "${1}" ] || { doUsage; exit 1; }
+[ $# -lt 4 -o $# -gt 5 ] && { doUsage; exit 1; }
-dir="${1}"
-cpt="${2}"
-inc="${3}"
-sed_re="${4}"
-
-case "$(LC_ALL=C hg id "${dir}" 2>/dev/null)" in
- "") CMD="";;
- *) CMD="hg";;
-esac
+src="${1}"
+dst="${2}"
+cpt="${3}"
+inc="${4}"
+sed_re="${5}"
+if [ ! -d "${src}" ]; then
+ printf "%s: '%s': not a directory\n" "${myname}" "${src}"
+ exit 1
+fi
+if [ -d "${dst}" ]; then
+ printf "%s: '%s': directory already exists\n" "${myname}" "${dst}"
+ exit 1
+fi
-if [ "${FAKE}" = "y" ]; then
- CMD="echo ${CMD}"
+Q=
+if [ -n "${FAKE}" ]; then
+ printf "%s: won't do anything: FAKE='%s'\n" "${myname}" "${FAKE}"
+ Q="echo"
fi
-for p in "${dir}"/*.patch*; do
+${Q} mkdir -pv "${dst}"
+for p in "${src}/"*.patch*; do
[ -e "${p}" ] || { echo "No such file '${p}'"; exit 1; }
newname="$(printf "%03d-%s" \
"${cpt}" \
@@ -48,6 +58,6 @@ for p in "${dir}"/*.patch*; do
-e "${sed_re}" \
)" \
)"
- [ "${p}" = "${dir}/${newname}" ] || ${CMD} mv -v "${p}" "${dir}/${newname}"
+ ${Q} cp -v "${p}" "${dst}/${newname}"
cpt=$((cpt+inc))
done