const fs = require('fs').promises;
const gt = require("gettext-parser");
const l  = require("lodash");
const path = require('path');

async function* getFiles(dir) {
  const dirents = await fs.readdir(dir, { withFileTypes: true });
  for (const dirent of dirents) {
    const res = path.resolve(dir, dirent.name);
    if (dirent.isDirectory()) {
      yield* getFiles(res);
    } else {
      yield res;
    }
  }
}

;(async () => {
  const fileRe = /.+\.po$/;
  const target = path.normalize("./translations/");
  const parent = path.join(target, "..");
  for await (const f of getFiles(target)) {
    if (!fileRe.test(f)) continue;
    const entry = path.relative(parent, f);
    console.log(`=> processing: ${entry}`);
    const content = await fs.readFile(f);
    const data = gt.po.parse(content, "utf-8")
    const buff = gt.po.compile(data, {sort: true});
    await fs.writeFile(f, buff);
  }
})()