make br use bash, and be easier to read
This commit is contained in:
parent
4fd519c195
commit
dd24af6c3c
|
@ -1,11 +1,21 @@
|
|||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
# Copyright Cédric Picard 2014 -- License WTFPL
|
||||
# Inspired by Ranger's -- See https://github.com/hut/ranger
|
||||
#
|
||||
# Code shuffled around by Leonardo Eugênio 2020
|
||||
|
||||
set -e -u
|
||||
|
||||
end(){
|
||||
rm -r -- "$(dirname -- "${namebase}")"
|
||||
[ $# -ne 0 ] && echo $@ >&2
|
||||
exit $#
|
||||
}
|
||||
|
||||
if [ $# -ne 0 ] ; then
|
||||
{ for i in "$@" ; do printf "%s\n" "$i" ; done } | "$0"
|
||||
for i in "$@" ; do
|
||||
printf "%s\n" "$i"
|
||||
done | "$0"
|
||||
exit $?
|
||||
fi
|
||||
|
||||
|
@ -15,28 +25,23 @@ namebase="$(mktemp -d)/blkrn"
|
|||
echo '# Modify filenames without removing any line, quitting aborts' \
|
||||
> "${namebase}.2"
|
||||
tee -- "${namebase}.1" >> "${namebase}.2"
|
||||
exec </dev/tty >/dev/tty \
|
||||
|| { echo 'Interactive terminal needed' >&2 ; exit 1; }
|
||||
exec </dev/tty >/dev/tty ||
|
||||
end 'Interactive terminal needed'
|
||||
|
||||
"$EDITOR" "${namebase}.2"
|
||||
"$EDITOR" -- "${namebase}.2"
|
||||
sed -i -- '1d' "${namebase}.2"
|
||||
|
||||
if [ $(wc -l < "${namebase}.1") -ne $(wc -l < "${namebase}.2") ] ; then
|
||||
rm -r -- "$(dirname -- "${namebase}")"
|
||||
echo "Wrong number of lines" >&2 ; exit 1
|
||||
fi
|
||||
! diff -- "${namebase}.1" "${namebase}.2" &> /dev/null || end "no changes"
|
||||
[ `wc -l < "${namebase}.1"` -eq `wc -l < "${namebase}.2"` ] || end "Wrong number of lines"
|
||||
|
||||
(echo '# Please review/modify this script or empty it to do nothing' \
|
||||
; while read -r l1 <&3 && read -r l2 <&4; do
|
||||
[ "$l1" = "$l2" ] || printf "%s\n%s\n" "$l1" "$l2"
|
||||
done 3<"${namebase}.1" 4<"${namebase}.2" \
|
||||
| sed 's/\([\\"$`]\)/\\\1/g;s/^.*$/"&"/' \
|
||||
| xargs -d"\n" -L2 echo 'mv -i --') \
|
||||
> "${namebase}.sh"
|
||||
{
|
||||
echo '# Please review/modify this script or empty it to do nothing'
|
||||
while read -r l1 <&3 && read -r l2 <&4; do
|
||||
[ "$l1" = "$l2" ] || printf "mv -i -- %q %q" "$l1" "$l2"
|
||||
done 3<"${namebase}.1" 4<"${namebase}.2"
|
||||
} > "${namebase}.sh"
|
||||
|
||||
if [ "$(wc -c < "${namebase}.sh")" -ne 0 ] ; then
|
||||
"$EDITOR" -- "${namebase}.sh"
|
||||
sh -e -- "${namebase}.sh"
|
||||
fi
|
||||
"$EDITOR" -- "${namebase}.sh"
|
||||
sh -e -- "${namebase}.sh"
|
||||
|
||||
rm -r -- "$(dirname "${namebase}")"
|
||||
end # exit normaly
|
||||
|
|
Reference in New Issue