#!/bin/sh

# extract file name and arguments from command line. File name
# is supposed to be the last one, if it doesn't exist, then it
# is assumed to be another argument.
FILE=
ARGS=
GRAYSCALE=
for arg in "$@"; do
	if [ "$arg" = "-gray" ]; then
		GRAYSCALE=1
	else
		ARGS="$ARGS $FILE"
		FILE=$arg;
	fi
done

# we're reading from STDIN, store it into a temporary file
temp=0
if test -z "$FILE" -o ! -f "$FILE" ; then
	ARGS="$ARGS $FILE"
	FILE=`mktemp /tmp/imagetops.XXXXXX` || exit 1
	cat > $FILE
	temp=1
fi

# check the file mime type, and set the command correspondingly
cmd=
magic=`file -bi $FILE`
if [[ $magic != image/* ]] ; then
	echo "Not an image"
	exit 1;
fi
case ${magic/image\//} in
	jpeg)
		cmd="djpeg -pnm"
		;;
	png|x-png)
		cmd="pngtopnm"
		;;
	bmp|x-bmp)
		cmd="bmptoppm"
		;;
	gif)
		cmd="giftopnm"
		;;
	tiff)
		cmd="tifftopnm"
		;;
	*)
		echo "Unsupported image type: $magic"
		exit 1
		;;

esac

# executing command
if [ "$GRAYSCALE" = "1" ]; then
	exec $cmd $FILE | ppmtopgm | pnmtops $ARGS
else
	exec $cmd $FILE | pnmtops $ARGS
fi
