App-Greple-xlate
view release on metacpan or search on metacpan
script/xlate view on Meta::CPAN
##############################################################################
# Option definitions
##############################################################################
define USAGE <<END
$myname - Translation CLI front-end
Usage: $myname [ options ] -t LANG FILE [ greple options ]
END
declare -A OPTS=(
[&USAGE]="$USAGE" [&REQUIRE]=0.8 [&PERMUTE]=
# Basic options
[ debug | d # debug mode (enables trace) ]=
[ trace # trace mode ]=
[ quiet | q # quiet mode ]=
[ help | h ! # show help ]=
[ version ! # show version ]=
# Translation options
[ api | a # use API ]=
[ check | c # just check translation area ]=
[ refresh | r # refresh cache ]=
[ update | u # force update cache ]=
[ silent | s # silent mode ]=
[ dryrun | n # dry-run ]=
[ engine | e : # translation engine ]=
[ wrap | w : # wrap line width ]=
[ format | o : # output format ]=
[ from-lang | b : # base language ]=
[ to-lang | t : # target language ]=
[ maxlen | m : # max length per API call ]=
[ maskfile | x : # mask patterns file ]=
[ glossary | g : # glossary file ]=
[ pattern | p @ # pattern to determine area ]=
[ file | f @ # pattern file ]=
[ library | l :! # show library files ]=
# Make option
[ make | M # run make ]=
# Docker options
[ image | I :! # Docker image ]=
[ docker | D ! # run xlate on Docker ]=
[ command | C ! # run command on Docker ]=
[ live | L ! # use live container ]=
[ kill | K ! # kill container ]=
[ env | E @>dozo_opts # environment variable ]=
[ mount-cwd | W >dozo_opts # mount cwd ]=
[ mount-home| H >dozo_opts # mount home ]=
[ volume | V @>dozo_opts # additional volume ]=
[ unmount | U >dozo_opts # do not mount ]=
[ mount-ro | R >dozo_opts # mount read-only ]=
[ batch | B >dozo_opts # batch mode ]=
[ name | N :>dozo_opts # container name ]=
[ port | P @>dozo_opts # port mapping ]=
[ other | O @>dozo_opts # additional docker option ]=
)
##############################################################################
# Parse options
##############################################################################
# Save args for get_remaining_args (used by callbacks)
declare -a PARSE_ARGS=("$@")
. getoptlong.sh OPTS "${PARSE_ARGS[@]}" || die "getoptlong.sh not found"
# Debug mode (currently enables trace)
[[ ${debug:-} ]] && trace=1
# Trace mode
[[ ${trace:-} ]] && set -x
find_gmake() {
local make
(( $# == 0 )) && set make gmake gnumake
for make in "$@"
do
[[ $("$make" --version) =~ GNU ]] && { echo "$make"; return 0; }
done
return 1
}
##
## Make
##
if [[ ${make:-} ]]; then
declare -a opt
for m in "$@"; do
if [[ -f $m ]]; then
# GNU Make behaves differently in different versions with
# respect to double-quoted strings and spaces within them.
files="${files:+$files|||}$m"
else
opt+=("$m")
fi
done
unset MAKELEVEL
gmake=$(find_gmake) || { warn "GNU Make is required."; exit 1; }
exec $gmake -f "$share/XLATE.mk" \
${dryrun:+-n} \
XLATE_LANG=\""${to_lang:-}"\" \
XLATE_DEBUG=${debug:-} \
XLATE_MAXLEN=${maxlen:-} \
XLATE_USEAPI=${api:-} \
XLATE_UPDATE=${update:-} \
${engine:+XLATE_ENGINE=\""$engine"\"} \
${format:+XLATE_FORMAT=\""$format"\"} \
${files:+XLATE_FILES=\""$files"\"} \
"${opt[@]}" \
|| exit 1
fi
if [[ ! ${to_lang:-} ]]; then
warn "$myname: -t option is required."
exit 1
fi
: ${format:=xtxt}
: ${engine:=deepl}
if [[ $format =~ ^(.+)-fold$ ]]; then
format=${BASH_REMATCH[1]}
( run in 1.714 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )