#!/bin/sh

im=spline
a="$(getopt i: "${@}")" \
|| {
    exit 1
}
set -- ${a}
for a
do
    case "${a}" in
    -i) shift; im="${1}"; shift;;
    --) shift; break;;
    esac
done

raw=''
pgm=''
export raw pgm
trap 'eval "rm -f \"${raw}\" \"${pgm}\""; exit 127' 1 2 9 13 14 15

src="$(basename "${1}")"
dir="$(cd "$(dirname "${1}")" && pwd)" || exit 2
[ -d "${TMPDIR}" ] || TMPDIR=/tmp
raw="${TMPDIR}/${src}"
if [ "${src##*.}" = bz2 ]
then
    raw="${TMPDIR}/${src%.bz2}"
    echo "${dir}/${src} => ${raw}" >&2
    bzcat "${dir}/${src}" >"${raw}" || exit 3
elif [ "${src##*.}" = gz ]
then
    raw="${TMPDIR}/${src%.gz}"
    echo "${dir}/${src} => ${raw}" >&2
    zcat "${dir}/${src}" >"${raw}" || exit 3
else
    echo "${dir}/${src} => ${raw}" >&2
    ln -s "${dir}/${src}" "${raw}" || exit 3
fi
pgm="${raw%%.*}.PGM"
echo "${raw} => ${pgm}" >&2
dcraw -v -t 0 -c -D -4 "${raw}" >"${pgm}"
rm "${raw}"

octave-cli -q "${0}.m" "${pgm}" "${im}" ${2} ${3}
rm "${pgm}"

for n in "${pgm%.PGM}"-[rgb]*.tiff
do
    o="${dir}/${n##*/}"
    mv "${n}" ${o}
    convert "${o}" -compress zip "${o}" || break
done
