build: fix for integration test bazel-schematics (#28532)

PR Close #28532
This commit is contained in:
Greg Magolan 2019-02-04 17:45:02 -08:00 committed by Matias Niemelä
parent 62c0deac42
commit ebaceb37e0
1 changed files with 32 additions and 11 deletions

View File

@ -3,23 +3,44 @@
const fs = require('fs');
function replaceAngular(content) {
const regex = /ANGULAR_VERSION.*\nhttp_archive\((.*\n){4}\)/;
if (!regex.test(content)) {
throw new Error("Failed to find http_archive rule for Angular in WORKSPACE");
}
return content.replace(regex, `
local_repository(
name = "angular",
path = "../../..",
)`);
}
function replaceNpm(content) {
const regex = /yarn_install\((.*\n){4}\)/;
if (!regex.test(content)) {
throw new Error("Failed to find yarn_install rule for Angular in WORKSPACE");
}
return content.replace(regex, `
yarn_install(
name = "npm",
# Need a reference to @angular here so that Bazel sets up the
# external repository before calling yarn_install
data = ["@angular//:LICENSE"],
package_json = "//:package.json",
yarn_lock = "//:yarn.lock",
)`);
}
function main(argv) {
argv = argv.slice(2);
if (argv.length !== 1) {
throw new Error('Expect WORKSPACE to be first parameter');
}
const workspace = argv[0];
const content = fs.readFileSync(workspace, 'utf-8');
const regex = /ANGULAR_VERSION.*\nhttp_archive\((.*\n){4}\)/;
if (!regex.test(content)) {
throw new Error("Failed to find http_archive rule for Angular in WORKSPACE");
}
const newContent = content.replace(regex, `
local_repository(
name = "angular",
path = "../../..",
)`);
fs.writeFileSync(workspace, newContent);
let content = fs.readFileSync(workspace, 'utf-8');
content = replaceAngular(content);
content = replaceNpm(content);
fs.writeFileSync(workspace, content);
}
main(process.argv)