diff options
author | Timmy Keller <tjk@tjkeller.xyz> | 2021-09-11 00:36:13 -0500 |
---|---|---|
committer | Timmy Keller <tjk@tjkeller.xyz> | 2021-09-11 00:36:13 -0500 |
commit | 0a9053c2902adab8b94eaacdb15390441143078c (patch) | |
tree | 1f1a38272dbd554cde8cdec263187112b9c6a7e8 /misc/vimv | |
download | scripts-0a9053c2902adab8b94eaacdb15390441143078c.tar.xz scripts-0a9053c2902adab8b94eaacdb15390441143078c.zip |
redid repo cus of fucking chromium rip old commit messages
Diffstat (limited to 'misc/vimv')
-rwxr-xr-x | misc/vimv | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/misc/vimv b/misc/vimv new file mode 100755 index 0000000..b0579f1 --- /dev/null +++ b/misc/vimv @@ -0,0 +1,44 @@ +#!/usr/bin/env bash +set -eu + +# Lists the current directory's files in Vim, so you can edit it and save to rename them +# USAGE: vimv [file1 file2] +# https://github.com/thameera/vimv + +declare -r FILENAMES_FILE=$(mktemp "${TMPDIR:-/tmp}/vimv.XXXXXX") + +trap '{ rm -f "${FILENAMES_FILE}" ; }' EXIT + +if [ $# -ne 0 ]; then + src=( "$@" ) +else + IFS=$'\r\n' GLOBIGNORE='*' command eval 'src=($(ls))' +fi + +for ((i=0;i<${#src[@]};++i)); do + echo "${src[i]}" >> "${FILENAMES_FILE}" +done + +${EDITOR:-vi} "${FILENAMES_FILE}" + +IFS=$'\r\n' GLOBIGNORE='*' command eval 'dest=($(cat "${FILENAMES_FILE}"))' + +if (( ${#src[@]} != ${#dest[@]} )); then + echo "WARN: Number of files changed. Did you delete a line by accident? Aborting.." >&2 + exit 1 +fi + +declare -i count=0 +for ((i=0;i<${#src[@]};++i)); do + if [ "${src[i]}" != "${dest[i]}" ]; then + mkdir -p "$(dirname "${dest[i]}")" + if git ls-files --error-unmatch "${src[i]}" > /dev/null 2>&1; then + git mv "${src[i]}" "${dest[i]}" + else + mv "${src[i]}" "${dest[i]}" + fi + ((++count)) + fi +done + +echo "$count" files renamed. |