#!/bin/sh
set -eu

usage() {
	cat <<-'EOF'
	Usage:
	  open FILE...
	  open -h
EOF
}

help() {
	cat <<-'EOF'

	Options:
	  -h, --help    show this message

	Examples:

	  Open an HTML file on the current $BROWSER:
	    open index.html

	  Open multiple PDF files (with zathura):
	    open *.pdf
EOF
}

for flag in "$@"; do
	case "$flag" in
		--)
			break
			;;
		--help)
			usage
			help
			exit
			;;
		*)
			;;
	esac
done

while getopts 'h' flag; do
	case "$flag" in
		h)
			usage
			help
			exit
			;;
		*)
			usage >&2
			exit 2
			;;
	esac
done
shift $((OPTIND - 1))

if [ -z "${1:-}" ]; then
	usage >&2
	exit 2
fi

for f in "$@"; do
	case "$f" in
		*.ico|*.jpg|*.jpeg|*.png)
			feh "$f"
			;;
		https://www.youtube.com/watch*)
			nohup mpv "$f" 1>&2 2>/dev/null &
			;;
		*.flac|*.ogg|*.mkv|*.avi|*.mp4)
			nohup mpv "$f" 1>&2 2>/dev/null &
			;;
		http*|*.svg|*.html)
			"$BROWSER" "$f"
			;;
		gopher://*)
			amfora "$f"
			;;
		gemini://*)
			amfora "$f"
			;;
		*.pdf|*.djvu|*.ps|*.epub)
			nohup zathura "$f" 1>&2 2>/dev/null &
			;;
		*.txt)
			less "$f"
			;;
		*.midi)
			timidity "$f"
			;;
		*)
			/run/current-system/sw/bin/xdg-open "$f"
			;;
	esac
done
