mirror of
https://github.com/Frooodle/Stirling-PDF.git
synced 2026-02-01 20:10:35 +01:00
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.2 to 6.0.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/checkout/releases">actions/checkout's releases</a>.</em></p> <blockquote> <h2>v6.0.1</h2> <h2>What's Changed</h2> <ul> <li>Update all references from v5 and v4 to v6 by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2314">actions/checkout#2314</a></li> <li>Add worktree support for persist-credentials includeIf by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2327">actions/checkout#2327</a></li> <li>Clarify v6 README by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2328">actions/checkout#2328</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v6...v6.0.1">https://github.com/actions/checkout/compare/v6...v6.0.1</a></p> <h2>v6.0.0</h2> <h2>What's Changed</h2> <ul> <li>Update README to include Node.js 24 support details and requirements by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li> <li>Persist creds to a separate file by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li> <li>v6-beta by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2298">actions/checkout#2298</a></li> <li>update readme/changelog for v6 by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2311">actions/checkout#2311</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v5.0.0...v6.0.0">https://github.com/actions/checkout/compare/v5.0.0...v6.0.0</a></p> <h2>v6-beta</h2> <h2>What's Changed</h2> <p>Updated persist-credentials to store the credentials under <code>$RUNNER_TEMP</code> instead of directly in the local git config.</p> <p>This requires a minimum Actions Runner version of <a href="https://github.com/actions/runner/releases/tag/v2.329.0">v2.329.0</a> to access the persisted credentials for <a href="https://docs.github.com/en/actions/tutorials/use-containerized-services/create-a-docker-container-action">Docker container action</a> scenarios.</p> <h2>v5.0.1</h2> <h2>What's Changed</h2> <ul> <li>Port v6 cleanup to v5 by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v5...v5.0.1">https://github.com/actions/checkout/compare/v5...v5.0.1</a></p> <h2>v5.0.0</h2> <h2>What's Changed</h2> <ul> <li>Update actions checkout to use node 24 by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li> <li>Prepare v5.0.0 release by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2238">actions/checkout#2238</a></li> </ul> <h2>⚠️ Minimum Compatible Runner Version</h2> <p><strong>v2.327.1</strong><br /> <a href="https://github.com/actions/runner/releases/tag/v2.327.1">Release Notes</a></p> <p>Make sure your runner is updated to this version or newer to use this release.</p> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v4...v5.0.0">https://github.com/actions/checkout/compare/v4...v5.0.0</a></p> <h2>v4.3.1</h2> <h2>What's Changed</h2> <ul> <li>Port v6 cleanup to v4 by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2305">actions/checkout#2305</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/actions/checkout/blob/main/CHANGELOG.md">actions/checkout's changelog</a>.</em></p> <blockquote> <h1>Changelog</h1> <h2>v6.0.2</h2> <ul> <li>Fix tag handling: preserve annotations and explicit fetch-tags by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2356">actions/checkout#2356</a></li> </ul> <h2>v6.0.1</h2> <ul> <li>Add worktree support for persist-credentials includeIf by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2327">actions/checkout#2327</a></li> </ul> <h2>v6.0.0</h2> <ul> <li>Persist creds to a separate file by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li> <li>Update README to include Node.js 24 support details and requirements by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li> </ul> <h2>v5.0.1</h2> <ul> <li>Port v6 cleanup to v5 by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li> </ul> <h2>v5.0.0</h2> <ul> <li>Update actions checkout to use node 24 by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li> </ul> <h2>v4.3.1</h2> <ul> <li>Port v6 cleanup to v4 by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2305">actions/checkout#2305</a></li> </ul> <h2>v4.3.0</h2> <ul> <li>docs: update README.md by <a href="https://github.com/motss"><code>@motss</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li> <li>Add internal repos for checking out multiple repositories by <a href="https://github.com/mouismail"><code>@mouismail</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li> <li>Documentation update - add recommended permissions to Readme by <a href="https://github.com/benwells"><code>@benwells</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li> <li>Adjust positioning of user email note and permissions heading by <a href="https://github.com/joshmgross"><code>@joshmgross</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2044">actions/checkout#2044</a></li> <li>Update README.md by <a href="https://github.com/nebuk89"><code>@nebuk89</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li> <li>Update CODEOWNERS for actions by <a href="https://github.com/TingluoHuang"><code>@TingluoHuang</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2224">actions/checkout#2224</a></li> <li>Update package dependencies by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li> </ul> <h2>v4.2.2</h2> <ul> <li><code>url-helper.ts</code> now leverages well-known environment variables by <a href="https://github.com/jww3"><code>@jww3</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1941">actions/checkout#1941</a></li> <li>Expand unit test coverage for <code>isGhes</code> by <a href="https://github.com/jww3"><code>@jww3</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1946">actions/checkout#1946</a></li> </ul> <h2>v4.2.1</h2> <ul> <li>Check out other refs/* by commit if provided, fall back to ref by <a href="https://github.com/orhantoy"><code>@orhantoy</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1924">actions/checkout#1924</a></li> </ul> <h2>v4.2.0</h2> <ul> <li>Add Ref and Commit outputs by <a href="https://github.com/lucacome"><code>@lucacome</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1180">actions/checkout#1180</a></li> <li>Dependency updates by <a href="https://github.com/dependabot"><code>@dependabot</code></a>- <a href="https://redirect.github.com/actions/checkout/pull/1777">actions/checkout#1777</a>, <a href="https://redirect.github.com/actions/checkout/pull/1872">actions/checkout#1872</a></li> </ul> <h2>v4.1.7</h2> <ul> <li>Bump the minor-npm-dependencies group across 1 directory with 4 updates by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1739">actions/checkout#1739</a></li> <li>Bump actions/checkout from 3 to 4 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1697">actions/checkout#1697</a></li> <li>Check out other refs/* by commit by <a href="https://github.com/orhantoy"><code>@orhantoy</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1774">actions/checkout#1774</a></li> <li>Pin actions/checkout's own workflows to a known, good, stable version. by <a href="https://github.com/jww3"><code>@jww3</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1776">actions/checkout#1776</a></li> </ul> <h2>v4.1.6</h2> <ul> <li>Check platform to set archive extension appropriately by <a href="https://github.com/cory-miller"><code>@cory-miller</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1732">actions/checkout#1732</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="8e8c483db8"><code>8e8c483</code></a> Clarify v6 README (<a href="https://redirect.github.com/actions/checkout/issues/2328">#2328</a>)</li> <li><a href="033fa0dc0b"><code>033fa0d</code></a> Add worktree support for persist-credentials includeIf (<a href="https://redirect.github.com/actions/checkout/issues/2327">#2327</a>)</li> <li><a href="c2d88d3ecc"><code>c2d88d3</code></a> Update all references from v5 and v4 to v6 (<a href="https://redirect.github.com/actions/checkout/issues/2314">#2314</a>)</li> <li><a href="1af3b93b68"><code>1af3b93</code></a> update readme/changelog for v6 (<a href="https://redirect.github.com/actions/checkout/issues/2311">#2311</a>)</li> <li><a href="71cf2267d8"><code>71cf226</code></a> v6-beta (<a href="https://redirect.github.com/actions/checkout/issues/2298">#2298</a>)</li> <li><a href="069c695914"><code>069c695</code></a> Persist creds to a separate file (<a href="https://redirect.github.com/actions/checkout/issues/2286">#2286</a>)</li> <li><a href="ff7abcd0c3"><code>ff7abcd</code></a> Update README to include Node.js 24 support details and requirements (<a href="https://redirect.github.com/actions/checkout/issues/2248">#2248</a>)</li> <li><a href="08c6903cd8"><code>08c6903</code></a> Prepare v5.0.0 release (<a href="https://redirect.github.com/actions/checkout/issues/2238">#2238</a>)</li> <li><a href="9f265659d3"><code>9f26565</code></a> Update actions checkout to use node 24 (<a href="https://redirect.github.com/actions/checkout/issues/2226">#2226</a>)</li> <li><a href="08eba0b27e"><code>08eba0b</code></a> Prepare release v4.3.0 (<a href="https://redirect.github.com/actions/checkout/issues/2237">#2237</a>)</li> <li>Additional commits viewable in <a href="https://github.com/actions/checkout/compare/v4.2.2...8e8c483db84b4bee98b60c0593521ed34d9990e8">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ludy <Ludy87@users.noreply.github.com>
298 lines
12 KiB
YAML
298 lines
12 KiB
YAML
name: Check TOML Translation Files on PR
|
|
|
|
# This workflow validates TOML translation files
|
|
|
|
on:
|
|
pull_request_target:
|
|
types: [opened, synchronize, reopened]
|
|
paths:
|
|
- "frontend/public/locales/*/translation.toml"
|
|
- ".github/scripts/check_language_toml.py"
|
|
- ".github/workflows/check_toml.yml"
|
|
|
|
# cancel in-progress jobs if a new job is triggered
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.number || github.ref_name || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
permissions:
|
|
contents: read # Allow read access to repository content
|
|
|
|
jobs:
|
|
check-files:
|
|
if: github.event_name == 'pull_request_target'
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
issues: write # Allow posting comments on issues/PRs
|
|
pull-requests: write # Allow writing to pull requests
|
|
steps:
|
|
- name: Harden Runner
|
|
uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0
|
|
with:
|
|
egress-policy: audit
|
|
|
|
- name: Checkout main branch first
|
|
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
|
|
- name: Setup GitHub App Bot
|
|
id: setup-bot
|
|
uses: ./.github/actions/setup-bot
|
|
with:
|
|
app-id: ${{ secrets.GH_APP_ID }}
|
|
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
|
|
|
- name: Get PR data
|
|
id: get-pr-data
|
|
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
|
|
with:
|
|
github-token: ${{ steps.setup-bot.outputs.token }}
|
|
script: |
|
|
const prNumber = context.payload.pull_request.number;
|
|
const repoOwner = context.payload.repository.owner.login;
|
|
const repoName = context.payload.repository.name;
|
|
const branch = context.payload.pull_request.head.ref;
|
|
|
|
console.log(`PR Number: ${prNumber}`);
|
|
console.log(`Repo Owner: ${repoOwner}`);
|
|
console.log(`Repo Name: ${repoName}`);
|
|
console.log(`Branch: ${branch}`);
|
|
|
|
core.setOutput("pr_number", prNumber);
|
|
core.setOutput("repo_owner", repoOwner);
|
|
core.setOutput("repo_name", repoName);
|
|
core.setOutput("branch", branch);
|
|
continue-on-error: true
|
|
|
|
- name: Fetch PR changed files
|
|
id: fetch-pr-changes
|
|
env:
|
|
GH_TOKEN: ${{ steps.setup-bot.outputs.token }}
|
|
run: |
|
|
echo "Fetching PR changed files..."
|
|
echo "Getting list of changed files from PR..."
|
|
# Check if PR number exists
|
|
if [ -z "${{ steps.get-pr-data.outputs.pr_number }}" ]; then
|
|
echo "Error: PR number is empty"
|
|
exit 1
|
|
fi
|
|
# Get changed files and filter for TOML translation files
|
|
gh pr view ${{ steps.get-pr-data.outputs.pr_number }} --json files -q ".files[].path" | grep -E '^frontend/public/locales/[a-zA-Z-]+/translation\.toml$' > changed_files.txt || echo "No matching TOML files found in PR"
|
|
# Check if any files were found
|
|
if [ ! -s changed_files.txt ]; then
|
|
echo "No TOML translation files changed in this PR"
|
|
echo "Workflow will exit early as no relevant files to check"
|
|
exit 0
|
|
fi
|
|
echo "Found $(wc -l < changed_files.txt) matching TOML files"
|
|
|
|
- name: Determine reference file
|
|
id: determine-file
|
|
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
|
|
with:
|
|
github-token: ${{ steps.setup-bot.outputs.token }}
|
|
script: |
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
|
|
const prNumber = ${{ steps.get-pr-data.outputs.pr_number }};
|
|
const repoOwner = "${{ steps.get-pr-data.outputs.repo_owner }}";
|
|
const repoName = "${{ steps.get-pr-data.outputs.repo_name }}";
|
|
|
|
const prRepoOwner = "${{ github.event.pull_request.head.repo.owner.login }}";
|
|
const prRepoName = "${{ github.event.pull_request.head.repo.name }}";
|
|
const branch = "${{ steps.get-pr-data.outputs.branch }}";
|
|
|
|
console.log(`Determining reference file for PR #${prNumber}`);
|
|
|
|
// Validate inputs
|
|
const validateInput = (input, regex, name) => {
|
|
if (!regex.test(input)) {
|
|
throw new Error(`Invalid ${name}: ${input}`);
|
|
}
|
|
};
|
|
|
|
validateInput(repoOwner, /^[a-zA-Z0-9_-]+$/, "repository owner");
|
|
validateInput(repoName, /^[a-zA-Z0-9._-]+$/, "repository name");
|
|
validateInput(branch, /^[a-zA-Z0-9._/-]+$/, "branch name");
|
|
|
|
// Get the list of changed files in the PR
|
|
const { data: files } = await github.rest.pulls.listFiles({
|
|
owner: repoOwner,
|
|
repo: repoName,
|
|
pull_number: prNumber,
|
|
});
|
|
|
|
// Filter for relevant TOML files based on the PR changes
|
|
const changedFiles = files
|
|
.filter(file =>
|
|
file.status !== "removed" &&
|
|
/^frontend\/public\/locales\/[a-zA-Z-]+\/translation\.toml$/.test(file.filename)
|
|
)
|
|
.map(file => file.filename);
|
|
|
|
console.log("Changed files:", changedFiles);
|
|
|
|
// Create a temporary directory for PR files
|
|
const tempDir = "pr-branch";
|
|
if (!fs.existsSync(tempDir)) {
|
|
fs.mkdirSync(tempDir, { recursive: true });
|
|
}
|
|
|
|
// Download and save each changed file
|
|
for (const file of changedFiles) {
|
|
const { data: fileContent } = await github.rest.repos.getContent({
|
|
owner: prRepoOwner,
|
|
repo: prRepoName,
|
|
path: file,
|
|
ref: branch,
|
|
});
|
|
|
|
const content = Buffer.from(fileContent.content, "base64").toString("utf-8");
|
|
const filePath = path.join(tempDir, file);
|
|
const dirPath = path.dirname(filePath);
|
|
|
|
if (!fs.existsSync(dirPath)) {
|
|
fs.mkdirSync(dirPath, { recursive: true });
|
|
}
|
|
|
|
fs.writeFileSync(filePath, content);
|
|
console.log(`Saved file: ${filePath}`);
|
|
}
|
|
|
|
// Output the list of changed files for further processing
|
|
const fileList = changedFiles.join(" ");
|
|
core.exportVariable("FILES_LIST", fileList);
|
|
console.log("Files saved and listed in FILES_LIST.");
|
|
|
|
// Determine reference file
|
|
let referenceFilePath;
|
|
if (changedFiles.includes("frontend/public/locales/en-GB/translation.toml")) {
|
|
console.log("Using PR branch reference file.");
|
|
const { data: fileContent } = await github.rest.repos.getContent({
|
|
owner: prRepoOwner,
|
|
repo: prRepoName,
|
|
path: "frontend/public/locales/en-GB/translation.toml",
|
|
ref: branch,
|
|
});
|
|
|
|
referenceFilePath = "pr-branch-translation-en-GB.toml";
|
|
const content = Buffer.from(fileContent.content, "base64").toString("utf-8");
|
|
fs.writeFileSync(referenceFilePath, content);
|
|
} else {
|
|
console.log("Using main branch reference file.");
|
|
const { data: fileContent } = await github.rest.repos.getContent({
|
|
owner: repoOwner,
|
|
repo: repoName,
|
|
path: "frontend/public/locales/en-GB/translation.toml",
|
|
ref: "main",
|
|
});
|
|
|
|
referenceFilePath = "main-branch-translation-en-GB.toml";
|
|
const content = Buffer.from(fileContent.content, "base64").toString("utf-8");
|
|
fs.writeFileSync(referenceFilePath, content);
|
|
}
|
|
|
|
console.log(`Reference file path: ${referenceFilePath}`);
|
|
core.exportVariable("REFERENCE_FILE", referenceFilePath);
|
|
|
|
- name: Set up Python
|
|
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
|
|
with:
|
|
python-version: "3.12"
|
|
|
|
- name: Install Python dependencies
|
|
run: pip install --require-hashes -r ./.github/scripts/requirements_sync_readme.txt
|
|
|
|
- name: Run Python script to check files
|
|
id: run-check
|
|
run: |
|
|
echo "Running Python script to check TOML files..."
|
|
python .github/scripts/check_language_toml.py \
|
|
--actor ${{ github.event.pull_request.user.login }} \
|
|
--reference-file "${REFERENCE_FILE}" \
|
|
--branch "pr-branch" \
|
|
--files "${FILES_LIST[@]}" > result.txt
|
|
continue-on-error: true # Continue the job even if this step fails
|
|
|
|
- name: Capture output
|
|
id: capture-output
|
|
run: |
|
|
if [ -f result.txt ] && [ -s result.txt ]; then
|
|
echo "Capturing output..."
|
|
SCRIPT_OUTPUT=$(cat result.txt)
|
|
echo "SCRIPT_OUTPUT<<EOF" >> $GITHUB_ENV
|
|
echo "$SCRIPT_OUTPUT" >> $GITHUB_ENV
|
|
echo "EOF" >> $GITHUB_ENV
|
|
echo "${SCRIPT_OUTPUT}"
|
|
|
|
# Determine job failure based on script output
|
|
if [[ "$SCRIPT_OUTPUT" == *"❌"* ]]; then
|
|
echo "FAIL_JOB=true" >> $GITHUB_ENV
|
|
else
|
|
echo "FAIL_JOB=false" >> $GITHUB_ENV
|
|
fi
|
|
else
|
|
echo "No output found."
|
|
echo "SCRIPT_OUTPUT=" >> $GITHUB_ENV
|
|
echo "FAIL_JOB=false" >> $GITHUB_ENV
|
|
fi
|
|
|
|
- name: Post comment on PR
|
|
if: env.SCRIPT_OUTPUT != ''
|
|
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
|
|
with:
|
|
github-token: ${{ steps.setup-bot.outputs.token }}
|
|
script: |
|
|
const { GITHUB_REPOSITORY, SCRIPT_OUTPUT } = process.env;
|
|
const [repoOwner, repoName] = GITHUB_REPOSITORY.split('/');
|
|
const issueNumber = context.issue.number;
|
|
|
|
// Find existing comment
|
|
const comments = await github.rest.issues.listComments({
|
|
owner: repoOwner,
|
|
repo: repoName,
|
|
issue_number: issueNumber
|
|
});
|
|
|
|
const comment = comments.data.find(c => c.body.includes("## 🌐 TOML Translation Verification Summary"));
|
|
|
|
// Only update or create comments by the action user
|
|
const expectedActor = "${{ steps.setup-bot.outputs.app-slug }}[bot]";
|
|
|
|
if (comment && comment.user.login === expectedActor) {
|
|
// Update existing comment
|
|
await github.rest.issues.updateComment({
|
|
owner: repoOwner,
|
|
repo: repoName,
|
|
comment_id: comment.id,
|
|
body: `## 🌐 TOML Translation Verification Summary\n\n\n${SCRIPT_OUTPUT}\n`
|
|
});
|
|
console.log("Updated existing comment.");
|
|
} else if (!comment) {
|
|
// Create new comment if no existing comment is found
|
|
await github.rest.issues.createComment({
|
|
owner: repoOwner,
|
|
repo: repoName,
|
|
issue_number: issueNumber,
|
|
body: `## 🌐 TOML Translation Verification Summary\n\n\n${SCRIPT_OUTPUT}\n`
|
|
});
|
|
console.log("Created new comment.");
|
|
} else {
|
|
console.log("Comment update attempt denied. Actor does not match.");
|
|
}
|
|
|
|
- name: Fail job if errors found
|
|
if: env.FAIL_JOB == 'true'
|
|
run: |
|
|
echo "Failing the job because errors were detected."
|
|
exit 1
|
|
|
|
- name: Cleanup temporary files
|
|
if: always()
|
|
run: |
|
|
echo "Cleaning up temporary files..."
|
|
rm -rf pr-branch
|
|
rm -f pr-branch-translation-en-GB.toml main-branch-translation-en-GB.toml changed_files.txt result.txt
|
|
echo "Cleanup complete."
|
|
continue-on-error: true # Ensure cleanup runs even if previous steps fail
|