diff --git a/.github/commands/bump.js b/.github/commands/bump.js
index a2a3b10..31ca036 100644
--- a/.github/commands/bump.js
+++ b/.github/commands/bump.js
@@ -6,6 +6,19 @@ const exec = (a, o) => {
cp.execSync(a, { stdio: 'inherit', ...o })
}
+const generateBody = (newVersion, issueNo, prNo) => `
+This automated PR sets up the relevant boilerplate for Minecraft version ${newVersion}.
+
+Links:
+- Issue: ${issueNo ? `https://github.com/PrismarineJS/minecraft-data/issues/${issueNo}` : 'N/A'}
+- PR: ${prNo ? `https://github.com/PrismarineJS/minecraft-data/pull/${prNo}` : 'N/A'}
+
+If the PR is passing, it will automatically send the generated artifacts to PrismarineJS/minecraft-data${prNo ? `#${prNo}` : ''}.
+
+If the PR is **not** passing:
+* You can help contribute to this PR by opening a PR against this bump branch instead of main.
+`
+
module.exports = async ([newVersion], helpers) => {
try {
bump(newVersion)
@@ -17,8 +30,8 @@ module.exports = async ([newVersion], helpers) => {
exec('git commit -m "Add version ' + newVersion + '"')
exec('git push origin bump --force')
const pr = await gh.createPullRequest(
- 'Add version ' + newVersion,
- 'This automated PR adds version ' + newVersion,
+ '🎈 Add version ' + newVersion, // special marker
+ generateBody(newVersion, process.env.MCDATA_ISSUE_NO, process.env.MCDATA_PULL_NO),
'bump',
'main'
)
diff --git a/.github/commands/send.js b/.github/commands/send.js
new file mode 100644
index 0000000..97aa08b
--- /dev/null
+++ b/.github/commands/send.js
@@ -0,0 +1,24 @@
+const gh = require('gh-helpers')()
+
+module.exports = async ([mergedArtifactURL], helpers) => {
+ // Have minecraft-data handle this successful update
+ const dispatchPayload = {
+ owner: 'PrismarineJS',
+ repo: 'minecraft-data',
+ workflow: 'handle-mcpc-generator.yml',
+ branch: 'main',
+ inputs: {
+ versions: JSON.stringify(require('../../versions.json')),
+ mergedArtifactURL: mergedArtifactURL,
+ prNumber: process.env.PR_NUMBER
+ }
+ }
+ console.log('Sending workflow dispatch', dispatchPayload)
+ await gh.sendWorkflowDispatch(dispatchPayload)
+}
+
+if (require.main === module) {
+ const merged = process.env.ARTIFACT_URL
+ console.log('Handling merged artifacts @', merged)
+ module.exports([merged], { reply: console.log })
+}
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index b4e2536..aa5860c 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -10,6 +10,9 @@ on:
permissions:
pull-requests: write
+env:
+ MARKER: '🎈'
+
jobs:
define-versions:
runs-on: ubuntu-latest
@@ -92,8 +95,19 @@ jobs:
merge-multiple: true
- name: Upload artifact
+ id: uploadMerged
uses: actions/upload-artifact@v4
with:
name: merged-data
path: artifacts/*
if-no-files-found: error
+
+ - name: Sending artifacts to minecraft-data
+ # Check if PR starts with marker
+ if: startsWith(github.event.pull_request.title, env.MARKER)
+ env:
+ ARTIFACT_URL: ${{ steps.uploadMerged.outputs.artifact-url }}
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ PR_TITLE: ${{ github.event.pull_request.title }}
+ PR_NUMBER: ${{ github.event.pull_request.number }}
+ run: node .github/commands/send.js
diff --git a/.github/workflows/handle-mcdata-update.yml b/.github/workflows/handle-mcdata-update.yml
index 5585237..52cdbe1 100644
--- a/.github/workflows/handle-mcdata-update.yml
+++ b/.github/workflows/handle-mcdata-update.yml
@@ -6,6 +6,13 @@ on:
description: 'What new version is like `1.21.6`'
required: true
default: '1.21.6'
+ pr_number:
+ description: 'What is the relevant minecraft-data PR URL?'
+ required: false
+ issue_number:
+ description: 'What is the relevant minecraft-data issue?'
+ required: false
+
jobs:
update-mcdata:
runs-on: ubuntu-latest
@@ -16,4 +23,7 @@ jobs:
- run: npm install # install gh-helpers
- run: node .github/commands/bump.js ${{ github.event.inputs.version }}
env:
+ MC_VERSION: ${{ github.event.inputs.version }}
+ MCDATA_PULL_NO: ${{ github.event.inputs.pr_number }}
+ MCDATA_ISSUE_NO: ${{ github.event.inputs.issue_number }}
GITHUB_TOKEN: ${{ secrets.PAT_PASSWORD }}