web-api-manager/gulpfile.js

59 lines
2.3 KiB
JavaScript
Raw Normal View History

const gulp = require('gulp');
const fs = require('fs');
2017-09-12 22:34:25 +00:00
gulp.task('default', function () {
const standardsDefDir = "data/standards";
2017-09-12 22:34:25 +00:00
// Build all the standards listings into a single features.js file.
const combinedStandards = fs.readdirSync(standardsDefDir)
2017-09-12 22:34:25 +00:00
.reduce(function (prev, next) {
if (next.indexOf(".json") === -1) {
return prev;
}
const fileContents = fs.readFileSync(standardsDefDir + "/" + next, {encoding: "utf8"});
const standardContents = JSON.parse(fileContents);
2017-09-12 22:34:25 +00:00
prev[standardContents.info.name] = standardContents;
return prev;
}, {});
let renderedStandardsModule = "/** This file is automatically generated by gulp. **/\n";
renderedStandardsModule += `window.WEB_API_MANAGER.standards = ${JSON.stringify(combinedStandards)};`;
2017-09-12 22:34:25 +00:00
fs.writeFileSync("content_scripts/dist/standards.js", renderedStandardsModule);
const proxyBlockSrc = fs.readFileSync("content_scripts/src/proxyblock.js", "utf8");
const instrumentSrc = fs.readFileSync("content_scripts/src/instrument.js", "utf8");
const stripCommentsFromSource = function (source) {
const fileLines = source.split("\n");
const linesWithoutComments = fileLines.filter(function (aLine) {
const lineStartsWithComment = (
aLine.indexOf("// ") === 0 ||
aLine.indexOf("/*") === 0 ||
aLine.indexOf(" * ") === 0
);
return !lineStartsWithComment;
});
return linesWithoutComments.join("\n");
};
const proxyBlockSrcWOComments = stripCommentsFromSource(proxyBlockSrc);
const instrumentSrcWOComments = stripCommentsFromSource(instrumentSrc);
const instrumentSrcWithProxyInjected = instrumentSrcWOComments.replace(
"###-INJECTED-PROXY-BLOCKING-CODE-###",
proxyBlockSrcWOComments
);
fs.writeFileSync("content_scripts/dist/instrument.js", instrumentSrcWithProxyInjected);
// Last, several content script files are just copied over, unmodified,
// as script files to be injected.
const srcFilesToCopy = ["defaults.js", "init.js"];
srcFilesToCopy.forEach(function (aSrcPath) {
fs.copyFileSync("content_scripts/src/" + aSrcPath, "content_scripts/dist/" + aSrcPath);
});
2017-09-12 22:34:25 +00:00
});