diff options
-rwxr-xr-x | build/i18n-sync.sh | 63 |
1 files changed, 52 insertions, 11 deletions
diff --git a/build/i18n-sync.sh b/build/i18n-sync.sh index 9a3060a42d..6d36ca4f0d 100755 --- a/build/i18n-sync.sh +++ b/build/i18n-sync.sh @@ -1,24 +1,65 @@ #!/bin/sh -[ -d ./build ] || { +print_help() { echo "Execute as ./build/i18n-sync.sh" >&2 + echo "Or run as: ./build/i18n-sync.sh [module folder e.g. applications/luci-app-example]" >&2 +} + +[ -d ./build ] || { + print_help exit 1 } +case $1 in + -h | --help ) + print_help + exit 0 + ;; +esac + +[ -n "$1" ] && set -- "${1%/}" + [ -n "$1" ] || ./build/mkbasepot.sh -find "${1:-.}" -name '*.pot' -and -not -name base.pot | \ - while read path; do - dir="${path%/po/templates/*}" - echo -n "Updating ${path#./} ... " - ./build/i18n-scan.pl "$dir" > "$path" - echo "done" - done +# Absent a [folder] parameter, use the current path +find "${1:-.}" -name '*.pot' -and -not -name base.pot | sort | \ + xargs -P 10 -I{} sh -c ' + dir="${1%/po/templates/*}" + echo "Updating ${1#./} ... " + ./build/i18n-scan.pl "$dir" > "$1" + echo "done" + ' sh {} + + # while read path; do + # dir="${path%/po/templates/*}" + # echo "Updating ${path#./} ... " + # # Scan for strings in a directory and stash them in the .pot file: + # ./build/i18n-scan.pl "$dir" > "$path" + # echo "done" + # done + if [ -n "$1" ]; then - find "$1" -path '*/templates/*.pot' -printf '%h ' | \ - xargs -r -n 1 dirname | \ - xargs -r -n 1 ./build/i18n-update.pl + if [ "$(uname)" = "Darwin" ] || [ "$(uname)" = "FreeBSD" ]; then + # macOS-specific commands + find "$1" -path '*/templates/*.pot' -print0 | xargs -0r stat -f '%N' | \ + xargs -r -n 1 dirname | \ + xargs -r -n 1 dirname | sort | \ + xargs -r -n 1 -P 40 ./build/i18n-update.pl + elif [ "$(uname)" = "Linux" ]; then + # Linux-specific commands + find "$1" -path '*/templates/*.pot' -printf '%h ' | \ + xargs -r -n 1 dirname | \ + xargs -r -n 1 -P 40 ./build/i18n-update.pl + # elif [ "$(uname)" = "SunOS" ]; then + # # Solaris-specific commands + else + # GNU specific commands can go here: + find "$1" -path '*/templates/*.pot' -printf '%h ' | \ + xargs -r -n 1 dirname | \ + xargs -r -n 1 -P 40 ./build/i18n-update.pl + fi else + # this performs operations on all .po files ./build/i18n-update.pl fi |