Skip to content

Instantly share code, notes, and snippets.

@srl295
Last active February 21, 2026 16:36
Show Gist options
  • Select an option

  • Save srl295/d03bbcb37f2a9c6964ba251e41bbb7a2 to your computer and use it in GitHub Desktop.

Select an option

Save srl295/d03bbcb37f2a9c6964ba251e41bbb7a2 to your computer and use it in GitHub Desktop.
aliases for use with CLDR
#!/bin/bash
##
## The Seal Deer says: “Always make sure you understand a script before you run it!”
##
# Steven R. Loomis <srl295@gmail.com>
# CLDR aliases - https://cldr.unicode.org
# SPDX-License-Identifier: Unicode-3.0
# URL to this: <https://gist.github.com/srl295/d03bbcb37f2a9c6964ba251e41bbb7a2>
alias cldr-rebuild='mvn clean compile install -DskipTests=true && mvn --file=tools/pom.xml -pl cldr-apps liberty:create'
alias cldr-dev='mvn --file=tools/pom.xml install -DskipTests=true && mvn --file=tools/pom.xml -pl cldr-apps liberty:stop liberty:deploy liberty:dev'
alias cldr-dev-nojs='mvn --file=tools/pom.xml install -DskipTests=true -Dskip.webpack -Dskip.npm -Dskip.installnodenpm && mvn --file=tools/pom.xml -pl cldr-apps liberty:stop liberty:deploy liberty:dev -Dskip.webpack -Dskip.npm -Dskip.installnodenpm'
alias cldr-js='(export PATH=/Users/srl295/.nvm/versions/node/$(cat .node-version || echo latest)/bin:${PATH}; cd tools/cldr-apps/js && npm i && npm run build-dev && npm run watch)'
alias cldr-pretty='bash tools/cldr-apps/js/test/pretty.sh'
alias cldr-spotless='env JAVA_HOME=/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home/ mvn spotless:apply'
alias cldr-test="mysql < tools/cldr-apps/test-setup.sql && mvn test --file tools/pom.xml '-Dorg.unicode.cldr.unittest.web.jdbcurl=jdbc:mysql://cldrtest:VbrB3LFCr6A!@localhost/cldrtest?useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC' '-Dorg.unicode.cldr.unittest.web.KeepDb=true' '-Dorg.unicode.cldr.unittest.testArgs=-e10 -n' '-Dorg.unicode.cldr.unittest.web.testArgs=-e10 -n' '-Dorg.unicode.cldr.api.testArgs=-e10 -n'"
alias cldr-worktrees="git worktree list | egrep -v '(archive|maint)'"
function cldr-check() {
PHASE="FINAL_TESTING"
if [[ "-z" == "$1" ]];
then
shift
PHASE=$1
shift
fi
EXECARGS="-e -z ${PHASE} ${@}"
CLDRCLASS="org.unicode.cldr.test.ConsoleCheckCLDR"
echo cldr-check ${EXECARGS}
env LANG=en_US.UTF-8 mvn -DCLDR_DIR=$(pwd) --file=tools/pom.xml -pl cldr-code \
-Dskip.npm -Dskip.installnodenpm -Dfile.encoding=utf-8 compile -DskipTests=true exec:java -Dexec.mainClass=${CLDRCLASS} \
-Dexec.args="${EXECARGS}"
}
function cldr-tool() {
CLDRCLASS=$1
if [[ "" == $(echo "${CLDRCLASS}" | tr -c -d .) ]];
then
# default package
CLDRCLASS=org.unicode.cldr.tool.${CLDRCLASS}
fi
shift
EXECARGS="${1}"
shift
echo ${CLDRCLASS} "${EXECARGS}" -Dexec.cleanupDaemonThreads=false ${@}
env LANG=en_US.UTF-8 mvn -DCLDR_DIR=$(pwd) -DCLDR_GITHUB_ANNOTATIONS=true --file=tools/pom.xml -pl cldr-code ${JVMARGS} \
-Dfile.encoding=utf-8 compile -DskipTests=true exec:java -Dexec.mainClass=${CLDRCLASS} \
-Dexec.args="${EXECARGS}" -Dexec.cleanupDaemonThreads=false ${@}
}
function cldr-tool-rdf() {
CLDRCLASS=$1
if [[ "" == $(echo "${CLDRCLASS}" | tr -c -d .) ]];
then
# default package
CLDRCLASS=org.unicode.cldr.tool.${CLDRCLASS}
fi
shiftik
EXECARGS="$1"
shift
echo ${CLDRCLASS} ${EXECARGS} ${@}
env LANG=en_US.UTF-8 mvn -DCLDR_DIR=$(pwd) -DCLDR_GITHUB_ANNOTATIONS=true --file=tools/pom.xml -pl cldr-rdf${JVMARGS} \
-Dfile.encoding=utf-8 compile -DskipTests=true exec:java -Dexec.mainClass=${CLDRCLASS} \
-Dexec.args="${EXECARGS}" ${@}
}
function cldr-tool-run() {
CLDRCLASS=$1
if [[ "" == $(echo "${CLDRCLASS}" | tr -c -d .) ]];
then
# default package
CLDRCLASS=org.unicode.cldr.tool.${CLDRCLASS}
fi
shift
EXECARGS="$1"
shift
echo ${CLDRCLASS} ${EXECARGS} ${@}
env LANG=en_US.UTF-8 mvn -DCLDR_DIR=$(pwd) -DCLDR_GITHUB_ANNOTATIONS=true --file=tools/pom.xml -pl cldr-code \
-Dfile.encoding=utf-8 -DskipTests=true exec:java -Dexec.mainClass=${CLDRCLASS} \
-Dexec.args="${EXECARGS}" ${@}
}
#
# Usage:
#
function cldr-modify() {
XDIR=$1
ARGZ=$2
if [[ ! -d "./${XDIR}" ]];
then
echo >&2 "Not a dir: ${XDIR}"
echo >&2 "Usage: cldr-modify <dir> <args>"
elif [[ $# -ne 2 ]];
then
echo >&2 "Usage: cldr-modify <dir> <args>"
else
TMPD=$(mktemp -d)
EXECARGZ="-d${TMPD} -s$(pwd)/${XDIR} ${ARGZ}"
echo -- -Dexec.args="${EXECARGZ}"
env LANG=en_US.UTF-8 mvn -DCLDR_DIR=$(pwd) --file=tools/pom.xml -pl cldr-code \
compile -DskipTests=true -Dfile.encoding=utf-8 exec:java \
-Dexec.mainClass=org.unicode.cldr.tool.CLDRModify \
-Dexec.args="${EXECARGZ}" && (rmdir ${TMPD} || (mv -v ${TMPD}/*.xml ${XDIR}/ && rmdir ${TMPD} ) )
fi
}
# usage:
# cldr-xfrm "some args"
# will automatically run cldr-modify -fp on the other dirs.
function cldr-xfrm() {
# XDIR=$1
ARGZ=$1
# if [[ ! -d "./${XDIR}" ]];
# then
# echo >&2 "Not a dir: ${XDIR}"
# echo >&2 "Usage: cldr-modify <dir> <args>"
# elif [[ $# -ne 2 ]];
# then
# echo >&2 "Usage: cldr-modify <dir> <args>"
# else
# TMPD=$(mktemp -d)
# EXECARGZ="-d${TMPD} ${ARGZ}"
# echo -- -Dexec.args="${EXECARGZ}"
rm -rf ${HOME}/src/Generated/cldr ; mkdir -pv ${HOME}/src/Generated/cldr
env LANG=en_US.UTF-8 mvn -DCLDR_DIR=$(pwd) --file=tools/pom.xml -pl cldr-code \
compile -DskipTests=true -Dfile.encoding=utf-8 exec:java \
-Dexec.mainClass=org.unicode.cldr.tool.CLDRFileTransformer \
"-Dexec.args=$ARGZ" \
&& rsync -av ${HOME}/src/Generated/cldr/ .
echo "Now run cldr-modify {dirs} -fp !"
}
# admin.json contains payload with email: admin@ and password: <the VAP password>
alias cldr-admin-login='curl -X POST "http://127.0.0.1:9080/cldr-apps/api/auth/login?remember=true" -H "accept: application/json" -H "Content-Type: application/json" -d@${HOME}/src/cldr-st/admin.json'
alias cldr-reformat='bash tools/cldr-apps/js/test/pretty.sh && mvn --file=tools/pom.xml -Dskip.npm -Dskip.installnodenpm spotless:apply'
function urepo() {
cd "${HOME}/src"
if [ -d "${HOME}/src/${1}" ];
then
cd "${HOME}/src/${1}" && code -r .
pwd
else
echo cloning unicode-org/${1}
gh repo clone unicode-org/${1} -- --depth 1 && cd ${1} && code -r .
pwd
fi
}
function ubranch() {
git pull && git checkout -b srl295/licensev3
}
function ucpylicense() {
pbcopy < ~/src/LICENSE
}
function ucpyreadme() {
pbcopy < ~/src/README.md
}
function ucpycommit() {
pbcopy < ~/src/COMMITMESSAGE
}
# speedup meson build
export MESON_PACKAGE_CACHE_DIR=${HOME}/Downloads/packagecache
mkdir -p ${MESON_PACKAGE_CACHE_DIR}
alias cldr-toptik="git log --pretty=%s HEAD | head -1 | cut -d' ' -f1"
# TODO: should run `gh` to find real base branch
alias cldr-mergit='git merge upstream/main -m "$(cldr-toptik) merge from main" ; git show head'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment