1
0
Fork 0

cbzcat(1)

This commit is contained in:
dtb 2024-03-20 12:05:04 -06:00
parent 29b44c8b48
commit 38204abcab
1 changed files with 58 additions and 0 deletions

58
cbz/cbzcat Executable file
View File

@ -0,0 +1,58 @@
#!/bin/sh
set -e
usage(){
printf "Usage: %s [files...]\n" "$0"
exit 64 # sysexits.h(3) EX_USAGE
}
test -n "$2" \
|| usage
set -x
d="$(mktemp -d)"
mkdir "$d"/x
i=1 # index
il=1 # index length in digits
for f in "$@"; do
test -e "$f" \
|| usage
unzip -d "$d"/x "$f"
rm "$d"/x/*.xml
for g in "$d"/x/*; do
# move file to indexed position
printf '%s\n' "$g" \
| sed 's|^.*\.||' \
| xargs printf '%s/%s%s\n' "$d" "$i". \
| xargs mv "$g"
# increment i
i="$(printf '1 + %s\n' "$i" | bc)"
# if there aren't enough leading zeroes
if ! printf '%s' "$i" \
| wc -c \
| xargs test "$il" =; then
for g in "$d"/*
do test "$g" = "$d"/x \
|| printf '%s\n' "$g" \
| sed 's|[^/]*$|0&|' \
| xargs mv "$g"
done
# update index digit length
il="$(printf '1 + %s\n' "$il" | bc)"
fi
done
done
rm -r "$d"/x
zip -Z deflate out.cbz "$d"/*
rm -r "$d"