diff --git a/.github/workflows/check_properties.yml b/.github/workflows/check_properties.yml index 62a3537ff..b45da71fb 100644 --- a/.github/workflows/check_properties.yml +++ b/.github/workflows/check_properties.yml @@ -15,6 +15,7 @@ jobs: runs-on: ubuntu-latest permissions: issues: write # Allow posting comments on issues/PRs + pull-requests: write steps: - name: Harden Runner uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2 @@ -29,19 +30,6 @@ jobs: with: python-version: "3.x" - - name: Fetch PR changed files - id: fetch-pr-changes - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - echo "Fetching PR changed files..." - - gh repo set-default ${{ github.event.pull_request.head.repo.full_name }} # Set the fork repository as default - - # Fetch the list of changed files in the PR - echo "Getting list of changed files from PR..." - gh pr view ${{ github.event.pull_request.number }} --json files -q ".files[].path" | grep -E '^src/main/resources/messages_[a-zA-Z_]+\.properties$' > changed_files.txt # Filter only matching property files - - name: Get PR data id: get-pr-data uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 @@ -62,14 +50,30 @@ jobs: 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: ${{ secrets.GITHUB_TOKEN }} + run: | + echo "Fetching PR changed files..." + echo "Getting list of changed files from PR..." + gh pr view ${{ steps.get-pr-data.outputs.pr_number }} --json files -q ".files[].path" | grep -E '^src/main/resources/messages_[a-zA-Z_]+\.properties$' > changed_files.txt # Filter only matching property files + - name: Determine reference file test - id: determine-file-1 + id: determine-file uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: 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}`); @@ -101,28 +105,28 @@ jobs: // Create a temporary directory for PR files const tempDir = "pr-branch"; - if (!require("fs").existsSync(tempDir)) { - require("fs").mkdirSync(tempDir, { recursive: true }); + 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: repoOwner, - repo: repoName, + owner: prRepoOwner, + repo: prRepoName, path: file, ref: branch, }); const content = Buffer.from(fileContent.content, "base64").toString("utf-8"); - const filePath = `${tempDir}/${file}`; - const dirPath = require("path").dirname(filePath); + const filePath = path.join(tempDir, file); + const dirPath = path.dirname(filePath); - if (!require("fs").existsSync(dirPath)) { - require("fs").mkdirSync(dirPath, { recursive: true }); + if (!fs.existsSync(dirPath)) { + fs.mkdirSync(dirPath, { recursive: true }); } - require("fs").writeFileSync(filePath, content); + fs.writeFileSync(filePath, content); console.log(`Saved file: ${filePath}`); } @@ -136,27 +140,27 @@ jobs: if (changedFiles.includes("src/main/resources/messages_en_GB.properties")) { console.log("Using PR branch reference file."); const { data: fileContent } = await github.rest.repos.getContent({ - owner: repoOwner, - repo: repoName, + owner: prRepoOwner, + repo: prRepoName, path: "src/main/resources/messages_en_GB.properties", ref: branch, }); referenceFilePath = "pr-branch-messages_en_GB.properties"; const content = Buffer.from(fileContent.content, "base64").toString("utf-8"); - require("fs").writeFileSync(referenceFilePath, content); + fs.writeFileSync(referenceFilePath, content); } else { console.log("Using main branch reference file."); const { data: fileContent } = await github.rest.repos.getContent({ - owner: "Stirling-Tools", - repo: "Stirling-PDF", + owner: repoOwner, + repo: repoName, path: "src/main/resources/messages_en_GB.properties", ref: "main", }); referenceFilePath = "main-branch-messages_en_GB.properties"; const content = Buffer.from(fileContent.content, "base64").toString("utf-8"); - require("fs").writeFileSync(referenceFilePath, content); + fs.writeFileSync(referenceFilePath, content); } console.log(`Reference file path: ${referenceFilePath}`); @@ -203,13 +207,13 @@ jobs: script: | const { GITHUB_REPOSITORY, SCRIPT_OUTPUT } = process.env; const [repoOwner, repoName] = GITHUB_REPOSITORY.split('/'); - const prNumber = context.issue.number; + const issueNumber = context.issue.number; // Find existing comment const comments = await github.rest.issues.listComments({ owner: repoOwner, repo: repoName, - issue_number: prNumber + issue_number: issueNumber }); const comment = comments.data.find(c => c.body.includes("## 🚀 Translation Verification Summary")); @@ -231,7 +235,7 @@ jobs: await github.rest.issues.createComment({ owner: repoOwner, repo: repoName, - issue_number: prNumber, + issue_number: issueNumber, body: `## 🚀 Translation Verification Summary\n\n\n${SCRIPT_OUTPUT}\n` }); console.log("Created new comment.");