From ebaceb37e03618ec952a6ecefb0ec990491e3740 Mon Sep 17 00:00:00 2001 From: Greg Magolan Date: Mon, 4 Feb 2019 17:45:02 -0800 Subject: [PATCH] build: fix for integration test bazel-schematics (#28532) PR Close #28532 --- .../bazel-schematics/replace_angular_repo.js | 43 ++++++++++++++----- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/integration/bazel-schematics/replace_angular_repo.js b/integration/bazel-schematics/replace_angular_repo.js index d3cd284bc7..1b5babb0f4 100644 --- a/integration/bazel-schematics/replace_angular_repo.js +++ b/integration/bazel-schematics/replace_angular_repo.js @@ -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)