aboutsummaryrefslogtreecommitdiff
#!/bin/sh
set -eu

while getopts 'iup:' flag; do
	case "$flag" in
		i)
			ACTION=install
			;;
		u)
			ACTION=uninstall
			;;
		p)
			MANPREFIX="$OPTARG"
			;;
		*)
			exit 2
			;;
	esac
done
shift $((OPTIND - 1))

assert_arg() {
	if [ -z "$1" ]; then
		echo "Missing $2" >&2
		exit 2
	fi
}

assert_arg "${ACTION:-}"    '-[iu] for choosing action'
assert_arg "${MANPREFIX:-}" '-p MANPREFIX'

for f in "$@"; do
	l="$(echo "$f" | awk -F. '{print $(NF-1)}')"
	n="$(echo "$f" | awk -F. '{print $NF}')"
	case "$ACTION" in
		install)
			to_name="$(basename "${f%."$l"."$n"}.$n")"
			mkdir -p "$MANPREFIX/$l/man$n" "$MANPREFIX/man$n"
			cp "$f" "$MANPREFIX/$l/man$n/$to_name"
			ln -fs "../en/man$n/$to_name" \
				"$MANPREFIX/man$n/$to_name"
			;;
		uninstall)
			to_name="$(basename "${f%."$l"."$n"}.$n")"
			rm -f \
				"$MANPREFIX/$l/man$n/$to_name" \
				"$MANPREFIX/man$n/$to_name"
			;;
		*)
			echo "Bad ACTION: $ACTION"
			exit 1
			;;
	esac
done