#!/bin/sh

set -e

usage(){
	printf "Usage: %s [files...]\n" "$0"
	exit 64 # sysexits.h(3) EX_USAGE
}

test -n "$2" \
	|| usage

d="$(mktemp -d || printf '%s/.cbzcat' "$HOME/")"
trap 'rm -rf "$d"; trap - EXIT; exit' EXIT INT HUP
mkdir -p "$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 -f "$d"/x/*.xml

	for g in "$d"/x/*; do
		# if there aren't enough leading zeroes
		if ! printf '%s' "$i" \
				| wc -c \
				| xargs test "$il" =; then
			for h in "$d"/*
				do test "$h" = "$d"/x \
					|| printf '%s\n' "$h" \
						| sed 's|[^/]*$|0&|' \
						| xargs mv "$h"
			done
			# update index digit length
			il="$(printf '1 + %s\n' "$il" | bc)"
		fi

		# 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)"
	done
done

rm -r "$d"/x

zip -Z deflate out.cbz "$d"/*

rm -r "$d"
