overleaf/services/web/scripts/translations/upload.js
Alf Eaton 1be43911b4 Merge pull request #3942 from overleaf/prettier-trailing-comma
Set Prettier's "trailingComma" setting to "es5"

GitOrigin-RevId: 9f14150511929a855b27467ad17be6ab262fe5d5
2021-04-28 02:10:01 +00:00

48 lines
1.4 KiB
JavaScript

const { promises: fs } = require('fs')
const { promisify } = require('util')
const oneSky = require('@brainly/onesky-utils')
const { withAuth } = require('./config')
const sleep = promisify(setTimeout)
async function uploadLocales() {
// Docs: https://github.com/onesky/api-documentation-platform/blob/master/resources/file.md#upload---upload-a-file
const blob = await oneSky.postFile(
withAuth({
fileName: 'en-US.json',
language: 'en-GB',
format: 'HIERARCHICAL_JSON',
content: await fs.readFile(`${__dirname}/../../locales/en.json`),
keepStrings: false, // deprecate locales that no longer exist in en.json
})
)
return JSON.parse(blob).data.import.id
}
async function getImportTask(importId) {
// Docs: https://github.com/onesky/api-documentation-platform/blob/master/resources/import_task.md
const blob = await oneSky.getImportTask(withAuth({ importId }))
return JSON.parse(blob).data
}
async function pollUploadStatus(importId) {
let task
while ((task = await getImportTask(importId)).status === 'in-progress') {
console.log('onesky is processing the import ...')
await sleep(5000)
}
if (task.status === 'failed') {
console.error({ task })
throw new Error('upload failed')
}
}
async function main() {
const importId = await uploadLocales()
await pollUploadStatus(importId)
}
main().catch(error => {
console.error({ error })
process.exit(1)
})