mirror of
https://github.com/facebook/docusaurus.git
synced 2025-06-03 11:22:30 +02:00
misc: convert all internal scripts to ESM (#6286)
* misc: convert all internal scripts to ESM * fixes * fix * fixes * fix! * complete eslint * more move * fix! * This looks better? * Final ones
This commit is contained in:
parent
bcc05e243f
commit
4fad1ce0cd
66 changed files with 412 additions and 374 deletions
59
website/waitForCrowdin.mjs
Normal file
59
website/waitForCrowdin.mjs
Normal file
|
@ -0,0 +1,59 @@
|
|||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
import {Translations} from '@crowdin/crowdin-api-client';
|
||||
|
||||
/*
|
||||
Crowdin does not support concurrent "project builds" (downloads of translations).
|
||||
The Crowdin CLI fails with error 409, and it leads to failures on Netlify.
|
||||
|
||||
On Docusaurus, when we commit on main, we have 2 Netlify deployments triggered:
|
||||
- prod
|
||||
- i18n-staging (work-in-progress locales)
|
||||
|
||||
This script helps the 2 deployments to not download translations concurrently from Crowdin.
|
||||
*/
|
||||
|
||||
const pollInterval = 5000;
|
||||
const timeout = 5 * 60 * 1000;
|
||||
|
||||
const projectId = 428890;
|
||||
const token = process.env.CROWDIN_PERSONAL_TOKEN; // set on Netlify
|
||||
|
||||
const translations = new Translations({token});
|
||||
|
||||
async function delay(ms) {
|
||||
return new Promise((resolve) => {
|
||||
setTimeout(resolve, ms);
|
||||
});
|
||||
}
|
||||
|
||||
async function hasBuildInProgress() {
|
||||
const projectBuilds = await translations.listProjectBuilds(projectId);
|
||||
return projectBuilds.data.some((build) => build.data.status === 'inProgress');
|
||||
}
|
||||
|
||||
const timeBefore = Date.now();
|
||||
|
||||
// eslint-disable-next-line no-constant-condition
|
||||
while (true) {
|
||||
if (Date.now() - timeBefore > timeout) {
|
||||
console.warn(
|
||||
'[Crowdin] Timeout of wait script reached => will try to proceed but download translations is likely to fail...',
|
||||
);
|
||||
break;
|
||||
}
|
||||
|
||||
const inProgress = await hasBuildInProgress();
|
||||
if (inProgress) {
|
||||
console.log('[Crowdin] A build is still in progress => waiting...');
|
||||
await delay(pollInterval);
|
||||
} else {
|
||||
console.warn("[Crowdin] No build in progress => let's continue");
|
||||
break;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue