(handle, allowedLangs)
| 270 | } |
| 271 | |
| 272 | async function batchHandle(handle, allowedLangs) { |
| 273 | process.stdout.write('Loading languages...'); |
| 274 | let langs = await getLanguages(); |
| 275 | process.stdout.write('OK\n'); |
| 276 | process.stdout.write(`Got ${langs.length} language codes\n`); |
| 277 | for (const lang of langs) { |
| 278 | await mkdir(`_locales/${lang}`, { recursive: true }); |
| 279 | } |
| 280 | spawn.sync('pnpm', ['i18n'], { stdio: 'inherit' }); |
| 281 | if (allowedLangs) langs = langs.filter(lang => allowedLangs.includes(lang)); |
| 282 | let finished = 0; |
| 283 | const showProgress = () => { |
| 284 | process.stdout.write(`\rHandling translations (${finished}/${langs.length})...`); |
| 285 | }; |
| 286 | showProgress(); |
| 287 | await Promise.all(langs.map(async lang => { |
| 288 | try { |
| 289 | await handle(lang); |
| 290 | finished += 1; |
| 291 | showProgress(); |
| 292 | } catch (err) { |
| 293 | process.stderr.write(`\nError handling ${lang}\n`); |
| 294 | throw err; |
| 295 | } |
| 296 | })); |
| 297 | process.stdout.write('\n'); |
| 298 | } |
| 299 | |
| 300 | async function updateResource() { |
| 301 | const result = await uploadResource(); |
no test coverage detected