#!/bin/bash

set -e

if [ ! "${3}" ]; then 
 printf "$0 xorriso_cmd dir_in image_out [--clean]\n"
 exit 1;
fi

XOR=${1}
DIR=${2}
IMG=${3}
RES="${IMG}.iso ${IMG}.new ${IMG}.md5 ${IMG}.jigdo ${IMG}.template"

# remove cruft from previous runs
# rm -f ${RES}

# create FAT partition
# /sbin/mkfs.msdos -n Bla -C test.fat 8192

# create MD5 list in base64 format
jigdo-gen-md5-list ${DIR} > ${IMG}.md5

# build the command - general section
CMD="${XOR} \
 -as mkisofs \
 -o ${IMG}.iso \
 -R \
 -V ISOJIGDO \
 -partition_offset 16 \
 -J -joliet-long \
"
# boot section
#if [ "${4}" ]; then
#CMD+=
#fi

# jigdo section
CMD+="\
 -jigdo-template-compress gzip \
 -checksum_algorithm_iso md5,sha1,sha256,sha512 \
 -checksum_algorithm_template md5,sha1,sha256,sha512 \
 -jigdo-jigdo ${IMG}.jigdo \
 -jigdo-template ${IMG}.template \
 -jigdo-map Debian=${DIR} \
 -md5-list  ${IMG}.md5 \
 -jigdo-min-file-size 1024 \
"

CMD+="${DIR}"

# run it
echo -e "$0: creating iso & jigdo representations:\n$CMD\n"
${CMD}

# create another one from jigdo files
jigit-mkimage \
   -t ${IMG}.template \
   -j ${IMG}.jigdo \
   -m Debian=${DIR} \
   -o ${IMG}.new

# diff'em
diff ${IMG}.iso ${IMG}.new

# sort out the cruft
if [ "${4}" == "--clean" ]; then
 rm -f ${RES}
 printf "removed: %s\n" ${RES}
else
 printf "left: %s\n" ${RES}
fi