From ad20a5e23c1e55db460c907defef372e4fa40b41 Mon Sep 17 00:00:00 2001 From: Rachael Sewell Date: Thu, 13 May 2021 17:10:28 -0700 Subject: [PATCH] crowdin frontmatter cleanup workflow (#19329) --- .github/workflows/crowdin-cleanup.yml | 33 +++++++++++++++++++++++++++ script/i18n/homogenize-frontmatter.js | 4 ++-- 2 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/crowdin-cleanup.yml diff --git a/.github/workflows/crowdin-cleanup.yml b/.github/workflows/crowdin-cleanup.yml new file mode 100644 index 0000000000..9028a3d8d7 --- /dev/null +++ b/.github/workflows/crowdin-cleanup.yml @@ -0,0 +1,33 @@ +name: Crowdin Cleanup + +# **What it does**: Homogenizes localized non-translatable frontmatter after every push by the octoglot bot to the translations branch. +# **Why we have it**: So Crowdin doesn't break frontmatter in production. +# **Who does it impact**: Docs engineering and international expansion. + +on: + workflow_dispatch: + push: + branches: + - translations + +jobs: + homogenize_frontmatter: + name: Homogenize frontmatter + # Only run this after octoglot commits or when a Hubber is running this using the workflow dispatch button. + if: github.repository == 'github/docs-internal' && (github.event.pusher.name == 'octoglot' || github.event_name == 'workflow_dispatch') + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f + + - name: Homogenize frontmatter + run: script/i18n/homogenize-frontmatter.js + + - name: Check in homogenized files + uses: EndBug/add-and-commit@b3c7c1e078a023d75fb0bd326e02962575ce0519 + with: + # The arguments for the `git add` command + add: 'translations' + + # The message for the commit + message: 'Run script/i18n/homogenize-frontmatter.js' diff --git a/script/i18n/homogenize-frontmatter.js b/script/i18n/homogenize-frontmatter.js index fe3564057c..134d0ae6bd 100755 --- a/script/i18n/homogenize-frontmatter.js +++ b/script/i18n/homogenize-frontmatter.js @@ -53,8 +53,8 @@ async function main () { // Look for differences between the english and localised non-translatable properties let overwroteSomething = false - for (const prop in englishFrontmatter.data) { - if (!fm.schema.properties[prop].translatable && localisedFrontmatter.data[prop] !== englishFrontmatter.data[prop]) { + for (const prop in localisedFrontmatter.data) { + if (!fm.schema.properties[prop].translatable && englishFrontmatter.data[prop] && localisedFrontmatter.data[prop] !== englishFrontmatter.data[prop]) { localisedFrontmatter.data[prop] = englishFrontmatter.data[prop] overwroteSomething = true }