#!/usr/bin/env node
//@ts-check

// used as a unit of releasing
var path = require("path");
var fs = require("fs");
var cp = require("child_process");
var rootDir = path.join(__dirname, "..");
var libJsDir = path.join(rootDir, "lib", "js");
var jscompDir = path.join(rootDir, "jscomp");

function run() {
  // Note removing js file would affect `release.ninja`
  // for (let file of fs.readdirSync(libJsDir)) {
  //     if (file.endsWith('.js')) {
  //         fs.unlinkSync(path.join(libJsDir, file))
  //     }
  // }

  cp.execSync(
    `git clean -dfx stubs ext common syntax depends core bsb main .`,
    { cwd: jscompDir, encoding: "utf8", stdio: [0, 1, 2] }
  );
  cp.execSync(`ninja -t clean -g && ninja`, {
    cwd: jscompDir,
    encoding: "utf8",
    stdio: [0, 1, 2],
  });
  cp.execSync("ninja", { cwd: path.join(rootDir, "lib"), stdio: [0, 1, 2] });
  cp.execSync("ninja -f release.ninja -t clean && ninja -f release.ninja", {
    cwd: path.join(rootDir, "jscomp"),
    stdio: [0, 1, 2],
  });
  require("./doc_gen").main();
}
if (require.main === module) {
  run();
}
exports.run = run;