Skip to content

Instantly share code, notes, and snippets.

@steebchen
Last active February 12, 2021 13:28
Show Gist options
  • Save steebchen/bd085ebde1fcf4242e3fdd0df4d202a6 to your computer and use it in GitHub Desktop.
Save steebchen/bd085ebde1fcf4242e3fdd0df4d202a6 to your computer and use it in GitHub Desktop.
bugfixes by imchairmanm
#!/bin/bash
set -e
swap() {
set -eu
a=$1
b=$2
mv "$a" "$a.backup"
mv "$b" "$b.backup"
numberA=$(echo $a | cut -d- -f1)
afterA=$(printf "%s" "${a#*-}")
numberB=$(echo $b | cut -d- -f1)
afterB=$(printf "%s" "${b#*-}")
mv "$a.backup" "$numberB-$afterA"
mv "$b.backup" "$numberA-$afterB"
}
insert() {
set -eu
new=$1
set +u
until_index=${2:-999999}
set -u
for file in $(ls | sort -g -r); do
filename=$(basename "$file")
number=$(echo "$filename" | cut -d- -f1)
number=${number:-0}
after=$(printf "%s" "${filename#*-}")
extension="${filename##*.}"
if [ "$extension" != "mdx" ] && [ "$filename" != "$extension" ]; then
continue
fi
if [ "$file" = "index.mdx" ]; then
continue
fi
if [ $number -ge $until_index ]; then
continue
fi
if [ $number -ge $new ]; then
mv "$file" "$(printf "%02d" "$((10#$number + 1))")-$after"
fi
done
}
remove() {
set -eu
new=$1
set +u
until_index=${2:--999999}
set -u
for file in $(ls | sort -g -r); do
filename=$(basename "$file")
number=$(echo "$filename" | cut -d- -f1)
number=${number:-0}
after=$(printf "%s" "${filename#*-}")
extension="${filename##*.}"
if [ "$extension" != "mdx" ] && [ "$filename" != "$extension" ]; then
continue
fi
if [ "$file" = "index.mdx" ]; then
continue
fi
if [ "$number" -le "$until_index" ]; then
continue
fi
if [ $number -gt $new ]; then
mv "$file" "$(printf "%02d" "$((10#$number - 1))")-$after"
fi
done
}
move() {
set -eu
move_file=$1 # 09-filtering.mdx
to_index=$2 # 3
# TODO handle moving to the other direction :')
mvinitial_index=$(echo $move_file | cut -d- -f1)
mvafter=$(printf "%s" "${move_file#*-}")
mv "$move_file" "/tmp/$move_file"
# e.g. if 09 >= 3
if [ $mvinitial_index -ge $to_index ]; then
echo "insert"
insert $to_index $mvinitial_index
else
echo "remove"
# remove $mvinitial_index $((to_index - 1))
new=$((10#$to_index - 1))
set +u
until_index=$mvinitial_index
set -u
for file in $(ls | sort -g -r); do
filename=$(basename "$file")
number=$(echo "$filename" | cut -d- -f1)
after=$(printf "%s" "${filename#*-}")
extension="${filename##*.}"
if [ "$extension" != "mdx" ] && [ "$filename" != "$extension" ]; then
continue
fi
if [ "$file" = "index.mdx" ]; then
continue
fi
if [ $number -le $until_index ]; then
continue
fi
if [ $number -le $((10#$new + 1)) ]; then
mv "$file" "$(printf "%02d" "$((10#$number - 1))")-$after"
fi
done
fi
mv "/tmp/$move_file" "$(printf "%02d" "$to_index")-$mvafter"
}
if [ $1 = "swap" ]; then
swap $2 $3
elif [ $1 = "insert" ]; then
insert $2 $3
elif [ $1 = "remove" ]; then
remove $2 $3
elif [ $1 = "move" ]; then
move $2 $3
else
echo "no such command $1"
exit 1
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment