Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 8 additions & 7 deletions .github/workflows/compile_card_db.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
name: Compile Card DB

on: [pull_request, workflow_dispatch]
on: [pull_request, workflow_dispatch, push]

jobs:
compile_card_db:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: 3.9
- run: |
Expand All @@ -19,33 +19,34 @@ jobs:
- run: |
pip install .
- name: Install PyICU
if: ${{ matrix.os == 'ubuntu-latest'}}
run: |
sudo apt update
sudo apt install python3-icu
- name: test generation with compiled Languages
run: pytest -k "test_languages"
- uses: dorny/paths-filter@v2
- uses: dorny/paths-filter@v3
id: filter
with:
base: HEAD
filters: |
cardb_target:
- src/domdiv/card_db/**
- name: Create Artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
if: steps.filter.outputs.cardb_target == 'true'
with:
name: card_db
path: src/domdiv/card_db/
- name: Save PR number
if: steps.filter.outputs.cardb_target == 'true'
env:
PR_NUMBER: ${{ github.event.number }}
run: |
mkdir -p ./pr
echo $PR_NUMBER > ./pr/pr_number
- name: Upload PR Artifact
uses: actions/upload-artifact@v4
if: steps.filter.outputs.cardb_target == 'true'
uses: actions/upload-artifact@v6
with:
name: pr_number
path: pr/
4 changes: 2 additions & 2 deletions .github/workflows/lint_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ jobs:
os: [ubuntu-latest, windows-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: 3.9
- run: |
Expand Down
170 changes: 122 additions & 48 deletions .github/workflows/make_card_db_pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,29 @@ on:
jobs:
make_pr:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
if: ${{ github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'pull_request' }}
permissions:
actions: read
contents: write
issues: write
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: actions/github-script@v6
- uses: actions/checkout@v6
- name: Determine source PR number from workflow payload
id: source-pr-payload
uses: actions/github-script@v8
with:
result-encoding: string
script: |
const prs = context.payload.workflow_run.pull_requests || [];
if (prs.length > 0) {
const prNumber = String(prs[0].number);
console.log(`source PR number (from workflow_run payload): ${prNumber}`);
return prNumber;
}
console.log('No source PR number found in workflow_run payload.');
return '';
- uses: actions/github-script@v8
id: get-artifact
with:
result-encoding: string
Expand All @@ -26,6 +45,9 @@ jobs:
var matchArtifacts = artifacts.data.artifacts.filter((artifact) => {
return artifact.name == "card_db"
});
var prNumberArtifacts = artifacts.data.artifacts.filter((artifact) => {
return artifact.name == "pr_number"
});
if (matchArtifacts.length > 0) {
var matchArtifact = matchArtifacts[0];
var download = await github.rest.actions.downloadArtifact({
Expand All @@ -36,76 +58,128 @@ jobs:
});
var fs = require('fs');
fs.writeFileSync('${{github.workspace}}/card_db.zip', Buffer.from(download.data));
if (prNumberArtifacts.length > 0) {
var prNumberArtifact = prNumberArtifacts[0];
var prNumberDownload = await github.rest.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: prNumberArtifact.id,
archive_format: 'zip',
});
fs.writeFileSync('${{github.workspace}}/pr_number.zip', Buffer.from(prNumberDownload.data));
}
return 'found_artifact';
} else {
return 'no_artifact'
}
- run: unzip -o -d src/domdiv/card_db card_db.zip
if: steps.get-artifact.outputs.result == 'found_artifact'
- run: rm -f card_db.zip
if: steps.get-artifact.outputs.result == 'found_artifact'
- name: 'Download PR number artifact'
if: steps.get-artifact.outputs.result == 'found_artifact'
uses: actions/github-script@v6
- name: Resolve source PR number
id: source-pr
env:
PAYLOAD_PR_NUMBER: ${{ steps.source-pr-payload.outputs.result }}
run: |
PR_NUMBER=""
if [ -f pr_number.zip ]; then
mkdir -p pr_meta
unzip -o -d pr_meta pr_number.zip
PR_NUMBER="$(tr -d '\r\n' < pr_meta/pr_number)"
fi

if [ -z "$PR_NUMBER" ]; then
PR_NUMBER="$PAYLOAD_PR_NUMBER"
fi

if [ -z "$PR_NUMBER" ]; then
echo "Unable to determine source PR number."
exit 1
fi

echo "Resolved source PR number: $PR_NUMBER"
echo "result=$PR_NUMBER" >> "$GITHUB_OUTPUT"
- name: Close stale auto PRs if no card DB changes
if: steps.get-artifact.outputs.result == 'no_artifact'
uses: actions/github-script@v8
env:
SOURCE_PR_NUMBER: ${{ steps.source-pr.outputs.result }}
with:
script: |
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: ${{github.event.workflow_run.id }},
});
let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => {
return artifact.name == "pr_number"
})[0];
let download = await github.rest.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: matchArtifact.id,
archive_format: 'zip',
});
let fs = require('fs');
fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/pr_number.zip`, Buffer.from(download.data));
- name: 'Unzip PR Number artifact'
const sourcePrNumber = Number(process.env.SOURCE_PR_NUMBER);
const targetTitle = `Auto Card DB compile for #${sourcePrNumber}`;
let page = 1;
let openAutoPrs = [];

while (true) {
const { data: prs } = await github.rest.pulls.list({
owner: context.repo.owner,
repo: context.repo.repo,
state: 'open',
per_page: 100,
page,
});

if (prs.length === 0) {
break;
}

openAutoPrs = openAutoPrs.concat(prs.filter((pr) => pr.title === targetTitle));
page += 1;
}

if (openAutoPrs.length === 0) {
console.log(`No open auto PR found for title: ${targetTitle}`);
return;
}

for (const pr of openAutoPrs) {
await github.rest.pulls.update({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pr.number,
state: 'closed',
});
console.log(`Closed stale auto PR #${pr.number}`);
}
- run: unzip -o -d src/domdiv/card_db card_db.zip
if: steps.get-artifact.outputs.result == 'found_artifact'
run: unzip pr_number.zip
- name: 'Read PR number'
id: read-pr-number
- run: rm -f card_db.zip
if: steps.get-artifact.outputs.result == 'found_artifact'
uses: actions/github-script@v6
with:
result-encoding: string
script: |
let fs = require('fs');
let pr_number = Number(fs.readFileSync('./pr_number'));
console.log(`original pr number: ${pr_number}`)
return pr_number
- name: Make PR
id: make-pr
if: steps.get-artifact.outputs.result == 'found_artifact'
uses: peter-evans/create-pull-request@v5
uses: peter-evans/create-pull-request@v8
with:
title: 'Auto Card DB compile for #${{ steps.read-pr-number.outputs.result }}'
branch: auto-card-db/pr-${{ steps.source-pr.outputs.result }}
title: 'Auto Card DB compile for #${{ steps.source-pr.outputs.result }}'
body: |
Auto-generate package card DB to from source card DB for PR #${{ steps.read-pr-number.outputs.result }}
Auto-generate package card DB to from source card DB for PR #${{ steps.source-pr.outputs.result }}
delete-branch: true
reviewers: sumpfork
assignees: sumpfork
add-paths: |
src/domdiv/card_db/
- name: 'Comment on PR'
if: steps.get-artifact.outputs.result == 'found_artifact'
uses: actions/github-script@v6
uses: actions/github-script@v8
env:
SOURCE_PR_NUMBER: ${{ steps.source-pr.outputs.result }}
THIS_PR_NUMBER: ${{ steps.make-pr.outputs.pull-request-number }}
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
console.log(`new PR number: ${{ steps.make-pr.outputs.pull-request-number }}`)
console.log(process.env)
const { THIS_PR_NUMBER } = process.env
console.log(`new PR number: ${THIS_PR_NUMBER}`)
let fs = require('fs');
let issue_number = Number(fs.readFileSync('./pr_number'));
const { SOURCE_PR_NUMBER, THIS_PR_NUMBER } = process.env;
console.log(`source PR number: ${SOURCE_PR_NUMBER}`);
console.log(`new PR number: ${THIS_PR_NUMBER}`);

if (!SOURCE_PR_NUMBER) {
core.setFailed('SOURCE_PR_NUMBER was empty in comment step.');
return;
}

const issue_number = Number(SOURCE_PR_NUMBER);
if (!Number.isInteger(issue_number) || issue_number <= 0) {
core.setFailed(`Invalid SOURCE_PR_NUMBER in comment step: ${SOURCE_PR_NUMBER}`);
return;
}

await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ jobs:
permissions:
id-token: write
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.x'
- name: Install dependencies
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/update_wiki.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@ jobs:
publish-wiki:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
repository: ${{github.repository}}.wiki
path: wiki_repo
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
path: repo
- uses: actions/setup-python@v5
- uses: actions/setup-python@v6
with:
python-version: 3.9
- name: Install dominion-dividers
Expand Down
2 changes: 1 addition & 1 deletion card_db_src/en_us/cards_en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -4207,7 +4207,7 @@
"name": "Wolf Den"
},
"Woodcutter": {
"description": "+1 Buy<br>+2 Coins",
"description": "+1 Buy<br>+2 Coin",
"extra": "During your Buy phase, you may add 2 Coins to the total value of the Treasure cards played, and you may buy an additional card from the Supply.",
"name": "Woodcutter"
},
Expand Down
9 changes: 3 additions & 6 deletions dodo.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,10 @@ def task_update_languages():
+ ["src/domdiv/tools/update_language.py", "src/domdiv/tools/common.py"],
"actions": [lambda: update_language.main("card_db_src", "src/domdiv/card_db")],
"targets": [
os.path.join(
"src",
"domdiv",
"card_db",
os.path.sep.join(fname.split(os.path.sep)[1:]),
)
os.path.join("src", "domdiv", "card_db", fname.removeprefix("card_db_src/"))
+ ".gz"
for fname in files
if fname.endswith(".json")
],
"clean": True,
}
Expand Down
6 changes: 3 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,6 @@ requires-python = ">= 3.8"
"Issue Tracker" = "https://github.com/sumpfork/dominiontabs/issues"
"Homepage" = "http://domtabs.sandflea.org"

[project.optional-dependencies]
dev = ["build", "twine", "pre-commit", "doit", "pytest"]

[project.scripts]
dominion_dividers = "domdiv.main:main"
domdiv_update_language = "domdiv.tools.update_language:run"
Expand All @@ -34,3 +31,6 @@ domdiv_dedupe_cards = "domdiv.tools.cleanup_language_dupes:main"

[tool.ruff.lint]
select = ["I"]

[dependency-groups]
dev = ["build", "twine", "pre-commit", "doit", "pytest"]
Binary file modified src/domdiv/card_db/en_us/cards_en_us.json.gz
Binary file not shown.
Binary file modified src/domdiv/card_db/es/cards_es.json.gz
Binary file not shown.
Binary file modified src/domdiv/card_db/xx/cards_xx.json.gz
Binary file not shown.
2 changes: 1 addition & 1 deletion src/domdiv/tools/update_language.py
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ def main(card_db_dir, output_dir):
) as f:
data = f.read()
output_fname = os.path.join(output_dir, lang, f"bonuses_{lang}.json.gz")
if check_compressed_json_change(output_fname, data):
if not check_compressed_json_change(output_fname, data):
with gzip.open(
output_fname,
"wt",
Expand Down
Loading