diff options
author | EuAndreh <eu@euandre.org> | 2025-05-22 12:48:12 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2025-05-22 12:48:12 -0300 |
commit | 7427618285e94986ce2ed16b8400b22a890782b3 (patch) | |
tree | b820f1cf49b1462fb0bbba5a113e2cccc42326fd /src/instool | |
parent | src/instool: Ignore error messages when listing man_dirnames() (diff) | |
download | eut-7427618285e94986ce2ed16b8400b22a890782b3.tar.gz eut-7427618285e94986ce2ed16b8400b22a890782b3.tar.xz |
src/instool: Only install i18n assets based on what $LOCALES includes
Diffstat (limited to 'src/instool')
-rwxr-xr-x | src/instool | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/src/instool b/src/instool index 495bd41..139d32c 100755 --- a/src/instool +++ b/src/instool @@ -46,28 +46,33 @@ mkdirs() { fi } -man_dirnames() { - find -- "$@" 2>/dev/null | xargs -I% basename % | - sed 's|^\(.*\)\.\([a-z][a-z]\)\.\(.*\)$|\2/man\3|' -} +includedlang() { + lang="$1" + + if [ -z "${LOCALES:-}" ]; then + return 0 + fi -dirs_man() { - { - man_dirnames "$@" - man_dirnames "$@" | cut -d/ -f2- - } | LANG=POSIX.UTF-8 sort | uniq | mkdirs + printf '%s\n' "$LOCALES" | tr ',' '\n' | grep -qF "$lang" } type_man() { f="$1" lang="$( basename -- "$f" | cut -d. -f2)" + if ! includedlang "$lang"; then + return + fi section="$(basename -- "$f" | cut -d. -f3-)" name="$(basename -- "${f%."$lang"."$section"}")" nameext="$name.$section" + dir="$DIRECTORY"/"$lang"/man"${section}" if [ "$ACTION" = install ]; then + mkdir -p -- "$dir" cp -- "$f" "$DIRECTORY/$lang/man${section}/$nameext" - ln -fs "../en/man${section}/$nameext" \ - "$DIRECTORY/man${section}/$nameext" + if [ "$lang" = 'en' ] && false; then + ln -fs "../en/man${section}/$nameext" \ + "$DIRECTORY/man${section}/$nameext" + fi else rm -f -- \ "$DIRECTORY/$lang/man${section}/$nameext" \ @@ -75,13 +80,12 @@ type_man() { fi } -dirs_mo() { - true -} - type_mo() { f="$1" lang="$(basename -- "$f" .mo)" + if ! includedlang "$lang"; then + return + fi name="$(basename -- "$(dirname -- "$f")")" dir="$DIRECTORY"/"$lang"/LC_MESSAGES if [ "$ACTION" = install ]; then @@ -96,7 +100,6 @@ type_mo() { if [ $# = 0 ]; then exit fi -dirs_"$TYPE" "$@" for f in "$@"; do type_"$TYPE" "$f" done |