From 5f7243c3ffa355221f86077411c140ae49c1258c Mon Sep 17 00:00:00 2001 From: Zeke Sikelianos Date: Fri, 16 Oct 2020 12:16:56 -0700 Subject: [PATCH] improve script for resetting translated files (#16099) * improve script for resetting translated files * update script/README.md Co-authored-by: Chiedo John <2156688+chiedo@users.noreply.github.com> --- script/README.md | 44 ++++++++++++++++++++++++--------- script/reset-translated-file.js | 37 +++++++++++++++++++++------ 2 files changed, 61 insertions(+), 20 deletions(-) diff --git a/script/README.md b/script/README.md index c2ee1b32fa..a9d3e7c624 100644 --- a/script/README.md +++ b/script/README.md @@ -30,6 +30,15 @@ Runs tests. Equivalent of `npm test`. ## Additional scripts +### [`anonymize-branch.js`](anonymize-branch.js) + +Flatten all the commits in the current branch into a single anonymized @Octomerger commit + +Usage: script/anonymize-branch.js [base-branch] Example: script/anonymize-branch.js "nothing to see here" If the optional [base-branch] argument is omitted, it will default to `main` + +--- + + ### [`archive-enterprise-version.js`](archive-enterprise-version.js) Run this script during the Enterprise deprecation process to download static copies of all pages for the oldest supported Enterprise version. See the Enterprise deprecation issue template for instructions. @@ -270,6 +279,19 @@ Usage $ script/new-versioning/main --- +### [`new-versioning/update-not-fpt-conditionals.js`](new-versioning/update-not-fpt-conditionals.js) + +Run this script to update these Liquid conditionals: + +{% if currentVersion != 'free-pro-team@latest' %} + +to: + +{% if enterpriseServerVersions contains currentVersion %} + +--- + + ### [`new-versioning/update-products-yml.js`](new-versioning/update-products-yml.js) @@ -307,15 +329,7 @@ This script is run as a git precommit hook (installed by husky after npm install ### [`preview-openapi-changes`](preview-openapi-changes) -This script stitches and unstitches the `github/github` OpenAPI description via `rest-api-operations` to produce a local preview in docs-internal. -`github`, `rest-api-operations`, and `docs-internal` must share a parent directory locally. - -You must bootstrap `github` for this script to work. To check if you need to bootstrap, check if the `bin` directory in `github` exists locally. If it does not exist, run `./script/bootstrap` from the `github` directory. - -To stitch the repos together and do an npm build, pass the `stitch` argument. - -To unstitch the repos and revert them to their pre-stitched state, pass the `unstitch` argument. --- @@ -379,13 +393,19 @@ Run this script to remove reusables and image files that exist in the repo but a This is a convenience script for replacing the contents of translated files with the English content from their corresponding source file. -It's intended to be a workaround to temporarily bypass Crowdin parser bugs while we wait for Crowdin to fix them. +It's intended to be a workaround to temporarily bypass Crowdin parser bugs while we wait for translators to fix them. -Usage: script/reset-translated-File.js [] +Usage: script/reset-translated-file.js -script/reset-translated-File.js content/desktop/foo.md -> resets all translations of foo.md +Examples: -script/reset-translated-File.js content/desktop/foo.md de -> resets german translation of foo.md +reset a single translated file using a relative path: $ script/reset-translated-file.js translations/es-XL/content/actions/index.md + +reset a single translated file using a full path: $ script/reset-translated-file.js /Users/z/git/github/docs-internal/translations/es-XL/content/actions/index.md + +reset all language variants of a single English file (using a relative path): $ script/reset-translated-file.js content/actions/index.md $ script/reset-translated-file.js data/ui.yml + +reset all language variants of a single English file (using a full path): $ script/reset-translated-file.js /Users/z/git/github/docs-internal/content/desktop/index.md $ script/reset-translated-file.js /Users/z/git/github/docs-internal/data/ui.yml --- diff --git a/script/reset-translated-file.js b/script/reset-translated-file.js index 588d2bd531..9f6c689e41 100755 --- a/script/reset-translated-file.js +++ b/script/reset-translated-file.js @@ -6,17 +6,26 @@ // files with the English content from their corresponding source file. // // It's intended to be a workaround to temporarily bypass Crowdin parser bugs -// while we wait for Crowdin to fix them. +// while we wait for translators to fix them. // // Usage: -// script/reset-translated-File.js [] +// script/reset-translated-file.js // -// script/reset-translated-File.js content/desktop/foo.md -// -> resets all translations of foo.md +// Examples: // -// script/reset-translated-File.js content/desktop/foo.md de -// -> resets german translation of foo.md +// reset a single translated file using a relative path: +// $ script/reset-translated-file.js translations/es-XL/content/actions/index.md // +// reset a single translated file using a full path: +// $ script/reset-translated-file.js /Users/z/git/github/docs-internal/translations/es-XL/content/actions/index.md +// +// reset all language variants of a single English file (using a relative path): +// $ script/reset-translated-file.js content/actions/index.md +// $ script/reset-translated-file.js data/ui.yml +// +// reset all language variants of a single English file (using a full path): +// $ script/reset-translated-file.js /Users/z/git/github/docs-internal/content/desktop/index.md +// $ script/reset-translated-file.js /Users/z/git/github/docs-internal/data/ui.yml // // [end-readme] @@ -25,8 +34,20 @@ const fs = require('fs') const path = require('path') const languages = require('../lib/languages') -const [relativePath, languageCode] = process.argv.slice(2) -assert(relativePath, 'first arg must be a target filename') +const [pathArg] = process.argv.slice(2) +assert(pathArg, 'first arg must be a target filename') +let languageCode + +// Is the arg a fully-qualified path? +let relativePath = fs.existsSync(pathArg) + ? path.relative(process.cwd(), pathArg) + : pathArg + +// extract relative path and language code if pathArg is in the format `translations//path/to/file` +if (relativePath.startsWith('translations/')) { + languageCode = Object.values(languages).find(language => relativePath.startsWith(language.dir) && language.code !== 'en').code + relativePath = relativePath.split(path.sep).slice(2).join(path.sep) +} const englishFile = path.join(process.cwd(), relativePath) assert(fs.existsSync(englishFile), `file does not exist: ${englishFile}`)