Blame utils/add-title.js

Packit Service eebd6f
// Extract the title from cockpit's manifest.json and append it to a .pot file
Packit Service eebd6f
// This assumes the .pot file already exists.
Packit Service eebd6f
Packit Service eebd6f
const fs = require("fs");
Packit Service eebd6f
const jsel = require("jsel");
Packit Service eebd6f
Packit Service eebd6f
if (process.argv.length !== 4) {
Packit Service eebd6f
  console.error("Usage: add-title <manifest.json> <POT-file>");
Packit Service eebd6f
  process.exit(1);
Packit Service eebd6f
}
Packit Service eebd6f
Packit Service eebd6f
const manifestJsonName = process.argv[2];
Packit Service eebd6f
const outputPOTName = process.argv[3];
Packit Service eebd6f
Packit Service eebd6f
const manifest = JSON.parse(fs.readFileSync(manifestJsonName, "utf8"));
Packit Service eebd6f
Packit Service eebd6f
// Anything in a "label" property is translatable
Packit Service eebd6f
// For each, output the string itself as the msgid, and an
Packit Service eebd6f
// empty msgstr (because it's a .pot)
Packit Service eebd6f
const dom = jsel(manifest);
Packit Service eebd6f
const potData = dom.selectAll("//@label").map((label) => {
Packit Service eebd6f
  return `
Packit Service eebd6f
#: ${manifestJsonName}
Packit Service eebd6f
msgid "${label}"
Packit Service eebd6f
msgstr ""
Packit Service eebd6f
`;
Packit Service eebd6f
});
Packit Service eebd6f
Packit Service eebd6f
fs.appendFileSync(outputPOTName, potData.join(""), "utf8");