2019-08-10 06:50:05 +07:00
|
|
|
// This builds the package and product JSON files for the final build.
|
|
|
|
const crypto = require("crypto");
|
|
|
|
const fs = require("fs");
|
|
|
|
const path = require("path");
|
|
|
|
const rootPath = path.resolve(__dirname, "..");
|
|
|
|
const sourcePath = process.argv[2];
|
|
|
|
const buildPath = process.argv[3];
|
|
|
|
const vscodeVersion = process.argv[4];
|
|
|
|
const codeServerVersion = process.argv[5];
|
|
|
|
const util = require(path.join(sourcePath, "build/lib/util"));
|
|
|
|
|
|
|
|
function computeChecksum(filename) {
|
|
|
|
return crypto.createHash("md5").update(fs.readFileSync(filename))
|
|
|
|
.digest("base64").replace(/=+$/, "");
|
|
|
|
}
|
|
|
|
|
|
|
|
const computeChecksums = (filenames) => {
|
|
|
|
const result = {};
|
|
|
|
filenames.forEach(function (filename) {
|
|
|
|
result[filename] = computeChecksum(path.join(buildPath, "out", filename));
|
|
|
|
});
|
|
|
|
return result;
|
|
|
|
};
|
|
|
|
|
|
|
|
const mergeAndWrite = (name, json = {}) => {
|
|
|
|
const aJson = JSON.parse(fs.readFileSync(path.join(sourcePath, `${name}.json`)));
|
|
|
|
const bJson = JSON.parse(fs.readFileSync(path.join(rootPath, "scripts", `${name}.json`)));
|
|
|
|
|
|
|
|
delete aJson.scripts;
|
|
|
|
delete aJson.dependencies;
|
|
|
|
delete aJson.devDependencies;
|
|
|
|
delete aJson.optionalDependencies;
|
|
|
|
|
|
|
|
fs.writeFileSync(path.join(buildPath, `${name}.json`), JSON.stringify({
|
|
|
|
...aJson,
|
|
|
|
...bJson,
|
|
|
|
...json,
|
|
|
|
}, null, 2));
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const writeProduct = () => {
|
|
|
|
const checksums = computeChecksums([
|
|
|
|
"vs/workbench/workbench.web.api.js",
|
|
|
|
"vs/workbench/workbench.web.api.css",
|
|
|
|
"vs/code/browser/workbench/workbench.html",
|
|
|
|
"vs/code/browser/workbench/workbench.js",
|
2019-10-05 06:14:07 +07:00
|
|
|
"vs/server/src/node/cli.js",
|
|
|
|
"vs/server/src/node/uriTransformer.js",
|
2019-08-10 06:50:05 +07:00
|
|
|
"vs/server/src/login/index.html"
|
|
|
|
]);
|
|
|
|
const date = new Date().toISOString();
|
|
|
|
const commit = util.getVersion(rootPath);
|
|
|
|
mergeAndWrite("product", { commit, date, checksums });
|
|
|
|
mergeAndWrite("package", { codeServerVersion: `${codeServerVersion}-vsc${vscodeVersion}` });
|
|
|
|
};
|
|
|
|
|
|
|
|
writeProduct();
|