diff options
author | EuAndreh <eu@euandre.org> | 2025-03-07 12:59:41 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2025-03-07 12:59:41 -0300 |
commit | a50fcb35d6d0006845b11eb41c57f4513615394d (patch) | |
tree | f4554e9eacb509ba2c61f1035134af086c25a026 /src | |
parent | src/statusf: Fix use of $STATUS (diff) | |
download | eut-a50fcb35d6d0006845b11eb41c57f4513615394d.tar.gz eut-a50fcb35d6d0006845b11eb41c57f4513615394d.tar.xz |
src/mandir: Add first draft
Diffstat (limited to 'src')
-rwxr-xr-x | src/mandir | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/mandir b/src/mandir new file mode 100755 index 0000000..c69ba6a --- /dev/null +++ b/src/mandir @@ -0,0 +1,55 @@ +#!/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]\)\.\([0-9]\)$|\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" | awk -F. '$0=$(NF - 1)')" + section="$(printf '%s\n' "$f" | awk -F. '$0=$(NF)')" + 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 |