Run tests before updating metadata, and combine Git configuration, commit, and push into a single step. Validating the downloaded dictionary file immediately after change detection ensures tests fail-fast before metadata is modified or staged. Combining Git setup, commit, and push reduces workflow step clutter and avoids unnecessary Git configuration on runs with no changes.
54 lines
1.6 KiB
YAML
54 lines
1.6 KiB
YAML
name: "Update CC-CEDICT"
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
branches:
|
|
- "main"
|
|
paths:
|
|
- ".github/workflows/update.yml"
|
|
- "cedict_1_0_ts_utf-8_mdbg.txt"
|
|
- "*_test.go"
|
|
schedule:
|
|
- cron: "0 9 * * *"
|
|
permissions:
|
|
contents: "write"
|
|
defaults:
|
|
run:
|
|
shell: "bash"
|
|
concurrency:
|
|
group: "update-${{ github.ref }}"
|
|
cancel-in-progress: true
|
|
jobs:
|
|
update:
|
|
name: "Update CC-CEDICT"
|
|
runs-on: "ubuntu-latest"
|
|
timeout-minutes: 5
|
|
steps:
|
|
- uses: "actions/checkout@v7"
|
|
- name: "Download"
|
|
run: |
|
|
URL='https://www.mdbg.net/chinese/export/cedict/cedict_1_0_ts_utf-8_mdbg.txt.gz'
|
|
curl -L ${URL} | gunzip > cedict_1_0_ts_utf-8_mdbg.txt
|
|
- name: "Check for changes"
|
|
id: "diff"
|
|
run: |
|
|
git add -- cedict_1_0_ts_utf-8_mdbg.txt
|
|
git diff --cached --stat
|
|
echo "changed=$(git diff --cached --quiet; echo $?)" >> "$GITHUB_OUTPUT"
|
|
- name: "Test"
|
|
if: "fromJSON(steps.diff.outputs.changed)"
|
|
run: "go test -v -count=1"
|
|
- name: "Update metadata"
|
|
if: "fromJSON(steps.diff.outputs.changed)"
|
|
run: |
|
|
awk -f meta -v RS='\r\n' cedict_1_0_ts_utf-8_mdbg.txt >> meta.csv
|
|
git add -- meta.csv
|
|
- name: "Commit and push"
|
|
if: "fromJSON(steps.diff.outputs.changed)"
|
|
run: |
|
|
git config user.name "Rodolfo Carvalho"
|
|
git config user.email "88819+rhcarvalho@users.noreply.github.com"
|
|
RELEASE_DATE="$(awk -f release_date -v RS='\r\n' cedict_1_0_ts_utf-8_mdbg.txt)"
|
|
git commit -m "CC-CEDICT ${RELEASE_DATE}"
|
|
git push
|