1
0
mirror of synced 2025-12-20 02:19:14 -05:00
Files
docs/script/update-crowdin-issue.js
2021-04-14 18:49:15 +00:00

109 lines
2.7 KiB
JavaScript
Executable File

#!/usr/bin/env node
require('dotenv').config()
const github = require('./helpers/github')()
const { execSync } = require('child_process')
// Check for required PAT
if (!process.env.GITHUB_TOKEN) {
console.error('Error! You must have a GITHUB_TOKEN set in an .env file to run this script.')
process.exit(1)
}
// [start-readme]
//
// Use this script as the last step of the Crowdin merge process to:
// 1. Add newly found broken translated files to the localization-support issue OP.
// 2. Add a comment on the issue with more details.
//
// [end-readme]
const fixableErrorsLog = '~/docs-translation-errors-fixable.txt'
const parsingErrorsLog = '~/docs-translation-parsing-error.txt'
const renderingErrorsLog = '~/docs-translation-rendering-error.txt'
// Get just the fixable files:
const fixable = execSync(`cat ${fixableErrorsLog} | egrep "^translations/.*/(.+.md|.+.yml)$" | sed -e 's/^/- [ ] /' | uniq`).toString()
// Get a list of files to be added to the body of the issue
const filesToAdd = execSync(`cat ${parsingErrorsLog} ${renderingErrorsLog} | egrep "^translations/.*/(.+.md|.+.yml)$" | sed -e 's/^/- [ ] /' | uniq`).toString()
// Cat the three error logs together
const allErrors = execSync('cat ~/docs-*').toString()
const comment = `
Did a fresh merge today!
<details>
<summary>In addition to the files in the PR body, these files also have errors, but can be fixed programmatically:</summary>
${fixable}
</details>
<details>
<summary>Here are the <b>new</b> errors:</summary>
\`\`\`
${allErrors}
\`\`\`
</details>
`
const owner = 'github'
const repo = 'localization-support'
const issueNumber = '489'
main()
async function main () {
await updateIssueBody()
await addNewComment()
console.log('Success! You can safely delete the temporary logfiles under ~/docs-*.')
}
async function updateIssueBody () {
// Get current body text of OP from https://github.com/github/localization-support/issues/489.
const { data: { body } } = await github.issues.get({
owner,
repo,
issue_number: issueNumber
})
// Update the body with the list of newly broken files
const newBody = body + '\n' + filesToAdd
// Update the issue
try {
await github.issues.update({
owner,
repo,
issue_number: issueNumber,
body: newBody
})
console.log('Added newly found broken files to OP of https://github.com/github/localization-support/issues/489!\n')
} catch (err) {
console.error(err)
}
}
async function addNewComment () {
try {
await github.issues.createComment({
owner,
repo,
issue_number: issueNumber,
body: comment
})
console.log('Added comment to the end of https://github.com/github/localization-support/issues/489!\n')
} catch (err) {
console.error(err)
}
}