# Monthly dictionary refresh. # # Wikimedia regenerates the Wiktionary tiếng Việt dump every month. This # downloads the current one, regenerates data/dictionary.txt from it — the # committed corpus the image is built from — and commits it straight to main, # which deploys it. The commit is the month's diff of the word list. # # The dump run that starts on the 1st takes a few days to publish, hence the # 10th. The builder fails below its word, page and meaning-coverage floors, so # a broken month commits nothing rather than a corpus with holes in it. A month # whose dump matches the committed corpus commits nothing either. # # A push made with GITHUB_TOKEN does not trigger ci.yml. The build here # already verifies the database it derives; the full suite runs on the next # push to main. name: refresh-dictionary on: schedule: - cron: "0 3 10 * *" workflow_dispatch: permissions: contents: write concurrency: group: refresh-dictionary cancel-in-progress: false jobs: refresh: name: Regenerate the corpus from the current dump runs-on: ubuntu-latest steps: - uses: actions/checkout@v7 with: ref: main - uses: actions/setup-go@v7 with: go-version: stable cache-dependency-path: server/go.sum - name: Download the dump run: make fetch-dict - name: Regenerate the corpus run: make refresh-dict # The commit message reports the dump's date and hash from the corpus # header, and how many words came and went. - name: Commit and push run: | set -eu if git diff --quiet -- data/dictionary.txt; then echo "The corpus matches the current dump; nothing to commit." exit 0 fi header() { sed -n "s/^#@$1 //p" data/dictionary.txt; } fetched="$(header source_fetched_at)" added="$(git diff -U0 -- data/dictionary.txt | grep -c '^+[^+#]' || true)" removed="$(git diff -U0 -- data/dictionary.txt | grep -c '^-[^-#]' || true)" words="$(grep -vc '^#\|^$' data/dictionary.txt)" git config user.name 'github-actions[bot]' git config user.email '41898282+github-actions[bot]@users.noreply.github.com' git add data/dictionary.txt git commit -F - <