#!/bin/sh set -eu usage() { cat <<-'EOF' Usage: mandir (install|uninstall) DESTDIR MANPAGES... EOF } ACTION="${1:-}" DESTDIR="${2:-}" eval "$(assert-arg -- "$ACTION" 'ACTION')" eval "$(assert-arg -- "$DESTDIR" 'DESTDIR')" shift shift ldirnames() { find "$@" | xargs -I% basename % | sed 's|^\(.*\)\.\([a-z][a-z]\)\.\(.*\)$|\2/man\3|' } dirnames() { ldirnames "$@" | sort | uniq ldirnames "$@" | cut -d/ -f2- | sort | uniq } if [ "$ACTION" = 'install' ]; then dirnames "$@" | xargs -I% mkdir -p "$DESTDIR"/% fi for f in "$@"; do lang="$( printf '%s\n' "$f" | cut -d. -f2)" section="$(printf '%s\n' "$f" | cut -d. -f3-)" name="$(basename "${f%."$lang"."$section"}")" nameext="$name.$section" case "$ACTION" in (install) cp "$f" "$DESTDIR/$lang/man${section}/$nameext" ln -fs "../en/man${section}/$nameext" \ "$DESTDIR/man${section}/$nameext" ;; (uninstall) rm -f \ "$DESTDIR/$lang/man${section}/$nameext" \ "$DESTDIR/man${section}/$nameext" ;; (*) usage >&2 exit 2 ;; esac done