@backstage/cli 0.34.6-next.1 → 0.34.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/CHANGELOG.md +2 -22
  2. package/dist/lib/errors.cjs.js +10 -0
  3. package/dist/lib/run.cjs.js +82 -0
  4. package/dist/lib/versioning/packages.cjs.js +7 -3
  5. package/dist/lib/versioning/yarn.cjs.js +8 -2
  6. package/dist/modules/build/commands/package/start/startFrontend.cjs.js +1 -1
  7. package/dist/modules/build/lib/buildBackend.cjs.js +20 -2
  8. package/dist/modules/build/lib/buildFrontend.cjs.js +1 -1
  9. package/dist/modules/build/lib/bundler/config.cjs.js +3 -3
  10. package/dist/modules/build/lib/packager/createDistWorkspace.cjs.js +28 -10
  11. package/dist/modules/info/commands/info.cjs.js +3 -2
  12. package/dist/modules/maintenance/commands/repo/clean.cjs.js +9 -4
  13. package/dist/modules/migrate/commands/packageLintConfigs.cjs.js +2 -2
  14. package/dist/modules/migrate/commands/versions/bump.cjs.js +22 -10
  15. package/dist/modules/migrate/lib/utils.cjs.js +5 -5
  16. package/dist/modules/new/lib/execution/PortableTemplater.cjs.js +2 -1
  17. package/dist/modules/new/lib/execution/executePortableTemplate.cjs.js +8 -20
  18. package/dist/modules/new/lib/tasks.cjs.js +26 -0
  19. package/dist/modules/test/commands/package/test.cjs.js +3 -3
  20. package/dist/modules/test/commands/repo/test.cjs.js +6 -5
  21. package/dist/packages/backend-defaults/package.json.cjs.js +1 -1
  22. package/dist/packages/backend-plugin-api/package.json.cjs.js +1 -1
  23. package/dist/packages/backend-test-utils/package.json.cjs.js +1 -1
  24. package/dist/packages/cli/package.json.cjs.js +2 -2
  25. package/dist/packages/core-app-api/package.json.cjs.js +1 -1
  26. package/dist/packages/core-components/package.json.cjs.js +1 -1
  27. package/dist/packages/core-plugin-api/package.json.cjs.js +1 -1
  28. package/dist/packages/dev-utils/package.json.cjs.js +1 -1
  29. package/dist/packages/frontend-defaults/package.json.cjs.js +1 -1
  30. package/dist/packages/frontend-plugin-api/package.json.cjs.js +1 -1
  31. package/dist/packages/frontend-test-utils/package.json.cjs.js +1 -1
  32. package/dist/packages/test-utils/package.json.cjs.js +1 -1
  33. package/dist/packages/theme/package.json.cjs.js +1 -1
  34. package/dist/plugins/auth-backend/package.json.cjs.js +1 -1
  35. package/dist/plugins/auth-backend-module-guest-provider/package.json.cjs.js +1 -1
  36. package/dist/plugins/catalog-node/package.json.cjs.js +1 -1
  37. package/dist/plugins/scaffolder-node/package.json.cjs.js +1 -1
  38. package/dist/plugins/scaffolder-node-test-utils/package.json.cjs.js +1 -1
  39. package/package.json +28 -28
package/CHANGELOG.md CHANGED
@@ -1,30 +1,10 @@
1
1
  # @backstage/cli
2
2
 
3
- ## 0.34.6-next.1
3
+ ## 0.34.6
4
4
 
5
5
  ### Patch Changes
6
6
 
7
- - 7fbac5c: Updated to use new utilities from `@backstage/cli-common`.
8
- - Updated dependencies
9
- - @backstage/cli-node@0.2.16-next.1
10
- - @backstage/cli-common@0.1.16-next.1
11
-
12
- ## 0.34.6-next.0
13
-
14
- ### Patch Changes
15
-
16
- - c8c2329: Add proxy configuration from env-vars to create-app tasks
17
- - Updated dependencies
18
- - @backstage/integration@1.18.3-next.0
19
- - @backstage/cli-common@0.1.16-next.0
20
- - @backstage/cli-node@0.2.16-next.0
21
- - @backstage/config@1.3.6
22
- - @backstage/release-manifests@0.0.13
23
- - @backstage/config-loader@1.10.7-next.0
24
- - @backstage/catalog-model@1.7.6
25
- - @backstage/errors@1.2.7
26
- - @backstage/eslint-plugin@0.2.0
27
- - @backstage/types@1.2.2
7
+ - Upgraded `tar` dependency to v7.
28
8
 
29
9
  ## 0.34.5
30
10
 
@@ -7,6 +7,15 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
7
7
 
8
8
  var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
9
9
 
10
+ class ExitCodeError extends errors.CustomErrorBase {
11
+ code;
12
+ constructor(code, command) {
13
+ super(
14
+ command ? `Command '${command}' exited with code ${code}` : `Child exited with code ${code}`
15
+ );
16
+ this.code = code;
17
+ }
18
+ }
10
19
  function exit(message, code = 1) {
11
20
  process.stderr.write(`
12
21
  ${chalk__default.default.red(message)}
@@ -58,5 +67,6 @@ ${chalk__default.default.red(errors.stringifyError(error))}
58
67
  }
59
68
  }
60
69
 
70
+ exports.ExitCodeError = ExitCodeError;
61
71
  exports.exitWithError = exitWithError;
62
72
  //# sourceMappingURL=errors.cjs.js.map
@@ -0,0 +1,82 @@
1
+ 'use strict';
2
+
3
+ var child_process = require('child_process');
4
+ var errors = require('./errors.cjs.js');
5
+ var util = require('util');
6
+ var errors$1 = require('@backstage/errors');
7
+
8
+ const execFile = util.promisify(child_process.execFile);
9
+ async function run(name, args = [], options = {}) {
10
+ const { stdoutLogFunc, stderrLogFunc } = options;
11
+ const env = {
12
+ ...process.env,
13
+ FORCE_COLOR: "true",
14
+ ...options.env ?? {}
15
+ };
16
+ const stdio = [
17
+ "inherit",
18
+ stdoutLogFunc ? "pipe" : "inherit",
19
+ stderrLogFunc ? "pipe" : "inherit"
20
+ ];
21
+ const child = child_process.spawn(name, args, {
22
+ stdio,
23
+ shell: true,
24
+ ...options,
25
+ env
26
+ });
27
+ if (stdoutLogFunc && child.stdout) {
28
+ child.stdout.on("data", stdoutLogFunc);
29
+ }
30
+ if (stderrLogFunc && child.stderr) {
31
+ child.stderr.on("data", stderrLogFunc);
32
+ }
33
+ await waitForExit(child, name);
34
+ }
35
+ async function runPlain(cmd, ...args) {
36
+ try {
37
+ const { stdout } = await execFile(cmd, args, { shell: true });
38
+ return stdout.trim();
39
+ } catch (error) {
40
+ errors$1.assertError(error);
41
+ if ("stderr" in error) {
42
+ process.stderr.write(error.stderr);
43
+ }
44
+ if (typeof error.code === "number") {
45
+ throw new errors.ExitCodeError(error.code, [cmd, ...args].join(" "));
46
+ }
47
+ throw new errors$1.ForwardedError("Unknown execution error", error);
48
+ }
49
+ }
50
+ async function runCheck(cmd, ...args) {
51
+ try {
52
+ await execFile(cmd, args, { shell: true });
53
+ return true;
54
+ } catch (error) {
55
+ return false;
56
+ }
57
+ }
58
+ async function waitForExit(child, name) {
59
+ if (typeof child.exitCode === "number") {
60
+ if (child.exitCode) {
61
+ throw new errors.ExitCodeError(child.exitCode, name);
62
+ }
63
+ return;
64
+ }
65
+ await new Promise((resolve, reject) => {
66
+ child.once("error", (error) => reject(error));
67
+ child.once("exit", (code) => {
68
+ if (code) {
69
+ reject(new errors.ExitCodeError(code, name));
70
+ } else {
71
+ resolve();
72
+ }
73
+ });
74
+ });
75
+ }
76
+
77
+ exports.execFile = execFile;
78
+ exports.run = run;
79
+ exports.runCheck = runCheck;
80
+ exports.runPlain = runPlain;
81
+ exports.waitForExit = waitForExit;
82
+ //# sourceMappingURL=run.cjs.js.map
@@ -3,7 +3,7 @@
3
3
  var minimatch = require('minimatch');
4
4
  var getPackages = require('@manypkg/get-packages');
5
5
  var yarn = require('./yarn.cjs.js');
6
- var cliCommon = require('@backstage/cli-common');
6
+ var run = require('../run.cjs.js');
7
7
  var errors = require('@backstage/errors');
8
8
 
9
9
  const DEP_TYPES = [
@@ -16,7 +16,11 @@ async function fetchPackageInfo(name) {
16
16
  const yarnVersion = await yarn.detectYarnVersion();
17
17
  const cmd = yarnVersion === "classic" ? ["info"] : ["npm", "info"];
18
18
  try {
19
- const output = await cliCommon.runOutput(["yarn", ...cmd, "--json", name]);
19
+ const { stdout: output } = await run.execFile(
20
+ "yarn",
21
+ [...cmd, "--json", name],
22
+ { shell: true }
23
+ );
20
24
  if (!output) {
21
25
  throw new errors.NotFoundError(
22
26
  `No package information found for package ${name}`
@@ -34,7 +38,7 @@ async function fetchPackageInfo(name) {
34
38
  if (yarnVersion === "classic") {
35
39
  throw error;
36
40
  }
37
- if (error instanceof Error && "stdout" in error && typeof error.stdout === "string" && error.stdout.includes("Response Code: 404")) {
41
+ if (error?.stdout.includes("Response Code: 404")) {
38
42
  throw new errors.NotFoundError(
39
43
  `No package information found for package ${name}`
40
44
  );
@@ -1,8 +1,10 @@
1
1
  'use strict';
2
2
 
3
3
  var errors = require('@backstage/errors');
4
- var cliCommon = require('@backstage/cli-common');
4
+ var child_process = require('child_process');
5
+ var util = require('util');
5
6
 
7
+ const execFile = util.promisify(child_process.execFile);
6
8
  const versions = /* @__PURE__ */ new Map();
7
9
  function detectYarnVersion(dir) {
8
10
  const cwd = process.cwd();
@@ -11,12 +13,16 @@ function detectYarnVersion(dir) {
11
13
  }
12
14
  const promise = Promise.resolve().then(async () => {
13
15
  try {
14
- const stdout = await cliCommon.runOutput(["yarn", "--version"], {
16
+ const { stdout } = await execFile("yarn", ["--version"], {
17
+ shell: true,
15
18
  cwd
16
19
  });
17
20
  return stdout.trim().startsWith("1.") ? "classic" : "berry";
18
21
  } catch (error) {
19
22
  errors.assertError(error);
23
+ if ("stderr" in error) {
24
+ process.stderr.write(error.stderr);
25
+ }
20
26
  throw new errors.ForwardedError("Failed to determine yarn version", error);
21
27
  }
22
28
  });
@@ -13,7 +13,7 @@ require('react-dev-utils/ModuleScopePlugin');
13
13
  require('@module-federation/enhanced/rspack');
14
14
  var paths = require('../../../../../lib/paths.cjs.js');
15
15
  require('lodash/pickBy');
16
- require('@backstage/cli-common');
16
+ require('../../../../../lib/run.cjs.js');
17
17
  require('../../../../../lib/version.cjs.js');
18
18
  var hasReactDomClient = require('../../../lib/bundler/hasReactDomClient.cjs.js');
19
19
  require('@manypkg/get-packages');
@@ -12,9 +12,27 @@ var cliNode = require('@backstage/cli-node');
12
12
 
13
13
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
14
14
 
15
+ function _interopNamespaceCompat(e) {
16
+ if (e && typeof e === 'object' && 'default' in e) return e;
17
+ var n = Object.create(null);
18
+ if (e) {
19
+ Object.keys(e).forEach(function (k) {
20
+ if (k !== 'default') {
21
+ var d = Object.getOwnPropertyDescriptor(e, k);
22
+ Object.defineProperty(n, k, d.get ? d : {
23
+ enumerable: true,
24
+ get: function () { return e[k]; }
25
+ });
26
+ }
27
+ });
28
+ }
29
+ n.default = e;
30
+ return Object.freeze(n);
31
+ }
32
+
15
33
  var os__default = /*#__PURE__*/_interopDefaultCompat(os);
16
34
  var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
17
- var tar__default = /*#__PURE__*/_interopDefaultCompat(tar);
35
+ var tar__namespace = /*#__PURE__*/_interopNamespaceCompat(tar);
18
36
 
19
37
  const BUNDLE_FILE = "bundle.tar.gz";
20
38
  const SKELETON_FILE = "skeleton.tar.gz";
@@ -46,7 +64,7 @@ async function buildBackend(options) {
46
64
  path.resolve(tmpDir, SKELETON_FILE),
47
65
  path.resolve(distDir, SKELETON_FILE)
48
66
  );
49
- await tar__default.default.create(
67
+ await tar__namespace.create(
50
68
  {
51
69
  file: path.resolve(distDir, BUNDLE_FILE),
52
70
  cwd: tmpDir,
@@ -16,7 +16,7 @@ require('html-webpack-plugin');
16
16
  require('react-dev-utils/ModuleScopePlugin');
17
17
  require('@module-federation/enhanced/rspack');
18
18
  require('lodash/pickBy');
19
- require('@backstage/cli-common');
19
+ require('../../../lib/run.cjs.js');
20
20
  require('../../../lib/version.cjs.js');
21
21
  require('yn');
22
22
  require('@manypkg/get-packages');
@@ -11,7 +11,7 @@ var paths = require('../../../../lib/paths.cjs.js');
11
11
  var fs = require('fs-extra');
12
12
  var optimization = require('./optimization.cjs.js');
13
13
  var pickBy = require('lodash/pickBy');
14
- var cliCommon = require('@backstage/cli-common');
14
+ var run = require('../../../../lib/run.cjs.js');
15
15
  var transforms = require('./transforms.cjs.js');
16
16
  var version = require('../../../../lib/version.cjs.js');
17
17
  var yn = require('yn');
@@ -48,12 +48,12 @@ async function readBuildInfo() {
48
48
  const timestamp = Date.now();
49
49
  let commit;
50
50
  try {
51
- commit = await cliCommon.runOutput(["git", "rev-parse", "HEAD"]);
51
+ commit = await run.runPlain("git", "rev-parse", "HEAD");
52
52
  } catch (error) {
53
53
  }
54
54
  let gitVersion;
55
55
  try {
56
- gitVersion = await cliCommon.runOutput(["git", "describe", "--always"]);
56
+ gitVersion = await run.runPlain("git", "describe", "--always");
57
57
  } catch (error) {
58
58
  }
59
59
  if (commit === void 0 || gitVersion === void 0) {
@@ -7,7 +7,7 @@ var os = require('os');
7
7
  var tar = require('tar');
8
8
  var partition = require('lodash/partition');
9
9
  var paths = require('../../../../lib/paths.cjs.js');
10
- var cliCommon = require('@backstage/cli-common');
10
+ var run = require('../../../../lib/run.cjs.js');
11
11
  var _package = require('../../../../packages/cli/package.json.cjs.js');
12
12
  var packager = require('../builder/packager.cjs.js');
13
13
  var types = require('../builder/types.cjs.js');
@@ -18,9 +18,27 @@ var typeDistProject = require('../../../../lib/typeDistProject.cjs.js');
18
18
 
19
19
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
20
20
 
21
+ function _interopNamespaceCompat(e) {
22
+ if (e && typeof e === 'object' && 'default' in e) return e;
23
+ var n = Object.create(null);
24
+ if (e) {
25
+ Object.keys(e).forEach(function (k) {
26
+ if (k !== 'default') {
27
+ var d = Object.getOwnPropertyDescriptor(e, k);
28
+ Object.defineProperty(n, k, d.get ? d : {
29
+ enumerable: true,
30
+ get: function () { return e[k]; }
31
+ });
32
+ }
33
+ });
34
+ }
35
+ n.default = e;
36
+ return Object.freeze(n);
37
+ }
38
+
21
39
  var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
22
40
  var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
23
- var tar__default = /*#__PURE__*/_interopDefaultCompat(tar);
41
+ var tar__namespace = /*#__PURE__*/_interopNamespaceCompat(tar);
24
42
  var partition__default = /*#__PURE__*/_interopDefaultCompat(partition);
25
43
 
26
44
  const UNSAFE_PACKAGES = [
@@ -104,11 +122,11 @@ async function createDistWorkspace(packageNames, options = {}) {
104
122
  await parallel.runParallelWorkers({
105
123
  items: customBuild,
106
124
  worker: async ({ name, dir, args }) => {
107
- await cliCommon.run(["yarn", "run", "build", ...args || []], {
125
+ await run.run("yarn", ["run", "build", ...args || []], {
108
126
  cwd: dir,
109
- onStdout: prefixLogFunc(`${name}: `, "stdout"),
110
- onStderr: prefixLogFunc(`${name}: `, "stderr")
111
- }).waitForExit();
127
+ stdoutLogFunc: prefixLogFunc(`${name}: `, "stdout"),
128
+ stderrLogFunc: prefixLogFunc(`${name}: `, "stderr")
129
+ });
112
130
  }
113
131
  });
114
132
  }
@@ -130,7 +148,7 @@ async function createDistWorkspace(packageNames, options = {}) {
130
148
  const dir = path.relative(paths.paths.targetRoot, target.dir);
131
149
  return path.join(dir, "package.json");
132
150
  }).sort();
133
- await tar__default.default.create(
151
+ await tar__namespace.create(
134
152
  {
135
153
  file: path.resolve(targetDir, options.skeleton),
136
154
  cwd: targetDir,
@@ -169,13 +187,13 @@ async function moveToDistWorkspace(workspaceDir, localPackages, alwaysPack, enab
169
187
  async function pack(target, archive) {
170
188
  console.log(`Repacking ${target.name} into dist workspace`);
171
189
  const archivePath = path.resolve(workspaceDir, archive);
172
- await cliCommon.run(["yarn", "pack", "--filename", archivePath], {
190
+ await run.run("yarn", ["pack", "--filename", archivePath], {
173
191
  cwd: target.dir
174
- }).waitForExit();
192
+ });
175
193
  const outputDir = path.relative(paths.paths.targetRoot, target.dir);
176
194
  const absoluteOutputPath = path.resolve(workspaceDir, outputDir);
177
195
  await fs__default.default.ensureDir(absoluteOutputPath);
178
- await tar__default.default.extract({
196
+ await tar__namespace.extract({
179
197
  file: archivePath,
180
198
  cwd: absoluteOutputPath,
181
199
  strip: 1
@@ -4,11 +4,12 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _package = require('../../../packages/cli/package.json.cjs.js');
6
6
  var os = require('os');
7
- var cliCommon = require('@backstage/cli-common');
7
+ var run = require('../../../lib/run.cjs.js');
8
8
  var paths = require('../../../lib/paths.cjs.js');
9
9
  var Lockfile = require('../../../lib/versioning/Lockfile.cjs.js');
10
10
  require('minimatch');
11
11
  require('@manypkg/get-packages');
12
+ require('../../../lib/versioning/yarn.cjs.js');
12
13
  require('@backstage/errors');
13
14
  var fs = require('fs-extra');
14
15
 
@@ -19,7 +20,7 @@ var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
19
20
 
20
21
  var info = async () => {
21
22
  await new Promise(async () => {
22
- const yarnVersion = await cliCommon.runOutput(["yarn", "--version"]);
23
+ const yarnVersion = await run.runPlain("yarn --version");
23
24
  const isLocal = fs__default.default.existsSync(paths.paths.resolveOwn("./src"));
24
25
  const backstageFile = paths.paths.resolveTargetRoot("backstage.json");
25
26
  let backstageVersion = "N/A";
@@ -1,15 +1,17 @@
1
1
  'use strict';
2
2
 
3
+ var child_process = require('child_process');
3
4
  var fs = require('fs-extra');
4
5
  var path = require('path');
6
+ var util = require('util');
5
7
  var cliNode = require('@backstage/cli-node');
6
8
  var paths = require('../../../../lib/paths.cjs.js');
7
- var cliCommon = require('@backstage/cli-common');
8
9
 
9
10
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
10
11
 
11
12
  var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
12
13
 
14
+ const execFile = util.promisify(child_process.execFile);
13
15
  async function command() {
14
16
  const packages = await cliNode.PackageGraph.listTargetPackages();
15
17
  await fs__default.default.remove(paths.paths.resolveTargetRoot("dist"));
@@ -25,9 +27,12 @@ async function command() {
25
27
  await fs__default.default.remove(path.resolve(pkg.dir, "dist-types"));
26
28
  await fs__default.default.remove(path.resolve(pkg.dir, "coverage"));
27
29
  } else if (cleanScript) {
28
- await cliCommon.run(["yarn", "run", "clean"], {
29
- cwd: pkg.dir
30
- }).waitForExit();
30
+ const result = await execFile("yarn", ["run", "clean"], {
31
+ cwd: pkg.dir,
32
+ shell: true
33
+ });
34
+ process.stdout.write(result.stdout);
35
+ process.stderr.write(result.stderr);
31
36
  }
32
37
  }
33
38
  })
@@ -3,7 +3,7 @@
3
3
  var fs = require('fs-extra');
4
4
  var path = require('path');
5
5
  var cliNode = require('@backstage/cli-node');
6
- var cliCommon = require('@backstage/cli-common');
6
+ var run = require('../../../lib/run.cjs.js');
7
7
 
8
8
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
9
9
 
@@ -65,7 +65,7 @@ async function command() {
65
65
  } catch {
66
66
  }
67
67
  if (hasPrettier) {
68
- await cliCommon.runOutput(["prettier", "--write", ...configPaths]);
68
+ await run.runPlain("prettier", "--write", ...configPaths);
69
69
  }
70
70
  }
71
71
 
@@ -2,8 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var cliCommon = require('@backstage/cli-common');
6
- var process = require('process');
5
+ var process$1 = require('process');
7
6
  var fs = require('fs-extra');
8
7
  var chalk = require('chalk');
9
8
  var minimatch = require('minimatch');
@@ -14,10 +13,12 @@ var paths = require('../../../../lib/paths.cjs.js');
14
13
  var yarnPlugin = require('../../../../lib/yarnPlugin.cjs.js');
15
14
  var Lockfile = require('../../../../lib/versioning/Lockfile.cjs.js');
16
15
  var packages = require('../../../../lib/versioning/packages.cjs.js');
16
+ var cliCommon = require('@backstage/cli-common');
17
17
  var parallel = require('../../../../lib/parallel.cjs.js');
18
18
  var releaseManifests = require('@backstage/release-manifests');
19
19
  var migrate = require('./migrate.cjs.js');
20
20
  var utils = require('../../lib/utils.cjs.js');
21
+ var run = require('../../../../lib/run.cjs.js');
21
22
 
22
23
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
23
24
 
@@ -25,7 +26,18 @@ var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
25
26
  var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
26
27
  var semver__default = /*#__PURE__*/_interopDefaultCompat(semver);
27
28
 
28
- cliCommon.bootstrapEnvProxyAgents();
29
+ maybeBootstrapProxy();
30
+ function maybeBootstrapProxy() {
31
+ const globalAgentNamespace = process.env.GLOBAL_AGENT_ENVIRONMENT_VARIABLE_NAMESPACE ?? "GLOBAL_AGENT_";
32
+ if (process.env[`${globalAgentNamespace}HTTP_PROXY`] || process.env[`${globalAgentNamespace}HTTPS_PROXY`]) {
33
+ const globalAgent = require("global-agent");
34
+ globalAgent.bootstrap();
35
+ }
36
+ if (process.env.HTTP_PROXY || process.env.HTTPS_PROXY) {
37
+ const { setGlobalDispatcher, EnvHttpProxyAgent } = require("undici");
38
+ setGlobalDispatcher(new EnvHttpProxyAgent());
39
+ }
40
+ }
29
41
  const DEP_TYPES = [
30
42
  "dependencies",
31
43
  "devDependencies",
@@ -54,8 +66,8 @@ var bump = async (opts) => {
54
66
  }
55
67
  let findTargetVersion;
56
68
  let releaseManifest;
57
- if (process.env.BACKSTAGE_MANIFEST_FILE) {
58
- releaseManifest = await fs__default.default.readJson(process.env.BACKSTAGE_MANIFEST_FILE);
69
+ if (process$1.env.BACKSTAGE_MANIFEST_FILE) {
70
+ releaseManifest = await fs__default.default.readJson(process$1.env.BACKSTAGE_MANIFEST_FILE);
59
71
  findTargetVersion = createStrictVersionFinder({
60
72
  releaseManifest
61
73
  });
@@ -68,17 +80,17 @@ var bump = async (opts) => {
68
80
  if (opts.release === "next") {
69
81
  const next = await releaseManifests.getManifestByReleaseLine({
70
82
  releaseLine: "next",
71
- versionsBaseUrl: process.env.BACKSTAGE_VERSIONS_BASE_URL
83
+ versionsBaseUrl: process$1.env.BACKSTAGE_VERSIONS_BASE_URL
72
84
  });
73
85
  const main = await releaseManifests.getManifestByReleaseLine({
74
86
  releaseLine: "main",
75
- versionsBaseUrl: process.env.BACKSTAGE_VERSIONS_BASE_URL
87
+ versionsBaseUrl: process$1.env.BACKSTAGE_VERSIONS_BASE_URL
76
88
  });
77
89
  releaseManifest = semver__default.default.gt(next.releaseVersion, main.releaseVersion) ? next : main;
78
90
  } else {
79
91
  releaseManifest = await releaseManifests.getManifestByReleaseLine({
80
92
  releaseLine: opts.release,
81
- versionsBaseUrl: process.env.BACKSTAGE_VERSIONS_BASE_URL
93
+ versionsBaseUrl: process$1.env.BACKSTAGE_VERSIONS_BASE_URL
82
94
  });
83
95
  }
84
96
  findTargetVersion = createVersionFinder({
@@ -92,8 +104,8 @@ var bump = async (opts) => {
92
104
  `Updating yarn plugin to v${releaseManifest.releaseVersion}...`
93
105
  );
94
106
  console.log();
95
- const yarnPluginUrl = process.env.BACKSTAGE_VERSIONS_BASE_URL ? `${process.env.BACKSTAGE_VERSIONS_BASE_URL}/v1/releases/${releaseManifest.releaseVersion}/yarn-plugin` : `https://versions.backstage.io/v1/releases/${releaseManifest.releaseVersion}/yarn-plugin`;
96
- await cliCommon.run(["yarn", "plugin", "import", yarnPluginUrl]).waitForExit();
107
+ const yarnPluginUrl = process$1.env.BACKSTAGE_VERSIONS_BASE_URL ? `${process$1.env.BACKSTAGE_VERSIONS_BASE_URL}/v1/releases/${releaseManifest.releaseVersion}/yarn-plugin` : `https://versions.backstage.io/v1/releases/${releaseManifest.releaseVersion}/yarn-plugin`;
108
+ await run.run("yarn", ["plugin", "import", yarnPluginUrl]);
97
109
  console.log();
98
110
  }
99
111
  const dependencyMap = await packages.mapDependencies(paths.paths.targetDir, pattern);
@@ -2,7 +2,7 @@
2
2
 
3
3
  var ora = require('ora');
4
4
  var chalk = require('chalk');
5
- var cliCommon = require('@backstage/cli-common');
5
+ var run = require('../../../lib/run.cjs.js');
6
6
 
7
7
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
8
8
 
@@ -17,7 +17,7 @@ async function runYarnInstall() {
17
17
  }).start();
18
18
  const installOutput = new Array();
19
19
  try {
20
- await cliCommon.run(["yarn", "install"], {
20
+ await run.run("yarn", ["install"], {
21
21
  env: {
22
22
  FORCE_COLOR: "true",
23
23
  // We filter out all of the npm_* environment variables that are added when
@@ -29,9 +29,9 @@ async function runYarnInstall() {
29
29
  )
30
30
  )
31
31
  },
32
- onStdout: (data) => installOutput.push(data),
33
- onStderr: (data) => installOutput.push(data)
34
- }).waitForExit();
32
+ stdoutLogFunc: (data) => installOutput.push(data),
33
+ stderrLogFunc: (data) => installOutput.push(data)
34
+ });
35
35
  spinner.succeed();
36
36
  } catch (error) {
37
37
  spinner.fail();
@@ -12,8 +12,9 @@ var lowerFirst = require('lodash/lowerFirst');
12
12
  var Lockfile = require('../../../../lib/versioning/Lockfile.cjs.js');
13
13
  require('minimatch');
14
14
  require('@manypkg/get-packages');
15
+ require('../../../../lib/versioning/yarn.cjs.js');
16
+ require('../../../../lib/run.cjs.js');
15
17
  require('@backstage/errors');
16
- require('@backstage/cli-common');
17
18
  var paths = require('../../../../lib/paths.cjs.js');
18
19
  var version = require('../../../../lib/version.cjs.js');
19
20
  var yarnPlugin = require('../../../../lib/yarnPlugin.cjs.js');
@@ -5,7 +5,6 @@ var codeowners = require('../codeowners/codeowners.cjs.js');
5
5
  var tasks = require('../tasks.cjs.js');
6
6
  var installNewPackage = require('./installNewPackage.cjs.js');
7
7
  var writeTemplateContents = require('./writeTemplateContents.cjs.js');
8
- var cliCommon = require('@backstage/cli-common');
9
8
 
10
9
  async function executePortableTemplate(options) {
11
10
  const { template, input } = options;
@@ -22,25 +21,14 @@ async function executePortableTemplate(options) {
22
21
  await codeowners.addCodeownersEntry(targetDir, input.owner);
23
22
  }
24
23
  if (!options.skipInstall) {
25
- for (const command of [
26
- ["yarn", "install"],
27
- ["yarn", "lint", "--fix"]
28
- ]) {
29
- const commandStr = command.join(" ");
30
- try {
31
- await tasks.Task.forItem("executing", commandStr, async () => {
32
- await cliCommon.run(command, {
33
- cwd: targetDir,
34
- stdio: "ignore"
35
- }).waitForExit();
36
- });
37
- } catch (error) {
38
- errors.assertError(error);
39
- tasks.Task.error(
40
- `Warning: Failed to execute command '${commandStr}', ${error}`
41
- );
42
- }
43
- }
24
+ await tasks.Task.forCommand("yarn install", {
25
+ cwd: targetDir,
26
+ optional: true
27
+ });
28
+ await tasks.Task.forCommand("yarn lint --fix", {
29
+ cwd: targetDir,
30
+ optional: true
31
+ });
44
32
  }
45
33
  tasks.Task.log();
46
34
  tasks.Task.log(`\u{1F389} Successfully created ${template.name}`);
@@ -2,12 +2,16 @@
2
2
 
3
3
  var chalk = require('chalk');
4
4
  var ora = require('ora');
5
+ var util = require('util');
6
+ var child_process = require('child_process');
7
+ var errors = require('@backstage/errors');
5
8
 
6
9
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
7
10
 
8
11
  var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
9
12
  var ora__default = /*#__PURE__*/_interopDefaultCompat(ora);
10
13
 
14
+ const exec = util.promisify(child_process.exec);
11
15
  const TASK_NAME_MAX_LENGTH = 14;
12
16
  class Task {
13
17
  static log(name = "") {
@@ -45,6 +49,28 @@ ${chalk__default.default.red(message)}
45
49
  throw error;
46
50
  }
47
51
  }
52
+ static async forCommand(command, options) {
53
+ try {
54
+ await Task.forItem("executing", command, async () => {
55
+ await exec(command, { cwd: options?.cwd });
56
+ });
57
+ } catch (error) {
58
+ errors.assertError(error);
59
+ if (error.stderr) {
60
+ process.stderr.write(error.stderr);
61
+ }
62
+ if (error.stdout) {
63
+ process.stdout.write(error.stdout);
64
+ }
65
+ if (options?.optional) {
66
+ Task.error(`Warning: Failed to execute command ${chalk__default.default.cyan(command)}`);
67
+ } else {
68
+ throw new Error(
69
+ `Failed to execute command '${chalk__default.default.cyan(command)}', ${error}`
70
+ );
71
+ }
72
+ }
73
+ }
48
74
  }
49
75
 
50
76
  exports.Task = Task;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var paths = require('../../../../lib/paths.cjs.js');
6
- var cliCommon = require('@backstage/cli-common');
6
+ var run = require('../../../../lib/run.cjs.js');
7
7
 
8
8
  function includesAnyOf(hayStack, ...needles) {
9
9
  for (const needle of needles) {
@@ -29,8 +29,8 @@ var test = async (_opts, cmd) => {
29
29
  if (!process.env.CI && !args.includes("--coverage") && // explicitly no watching
30
30
  !includesAnyOf(args, "--no-watch", "--watch=false", "--watchAll=false") && // already watching
31
31
  !includesAnyOf(args, "--watch", "--watchAll")) {
32
- const isGitRepo = () => cliCommon.runCheck(["git", "rev-parse", "--is-inside-work-tree"]);
33
- const isMercurialRepo = () => cliCommon.runCheck(["hg", "--cwd", ".", "root"]);
32
+ const isGitRepo = () => run.runCheck("git", "rev-parse", "--is-inside-work-tree");
33
+ const isMercurialRepo = () => run.runCheck("hg", "--cwd", ".", "root");
34
34
  if (await isGitRepo() || await isMercurialRepo()) {
35
35
  args.push("--watch");
36
36
  } else {
@@ -7,6 +7,7 @@ var jestCli = require('jest-cli');
7
7
  var path = require('path');
8
8
  var cliNode = require('@backstage/cli-node');
9
9
  var paths = require('../../../../lib/paths.cjs.js');
10
+ var run = require('../../../../lib/run.cjs.js');
10
11
  var cliCommon = require('@backstage/cli-common');
11
12
  var SuccessCache = require('../../../../lib/cache/SuccessCache.cjs.js');
12
13
 
@@ -21,14 +22,14 @@ async function readPackageTreeHashes(graph) {
21
22
  ...pkg,
22
23
  path: path.relative(paths.paths.targetRoot, pkg.dir)
23
24
  }));
24
- const output = await cliCommon.runOutput([
25
+ const output = await run.runPlain(
25
26
  "git",
26
27
  "ls-tree",
27
- "--format=%(objectname)=%(path)",
28
+ '--format="%(objectname)=%(path)"',
28
29
  "HEAD",
29
30
  "--",
30
31
  ...pkgs.map((pkg) => pkg.path)
31
- ]);
32
+ );
32
33
  const map = new Map(
33
34
  output.trim().split(/\r?\n/).map((line) => {
34
35
  const [itemSha, ...itemPathParts] = line.split("=");
@@ -107,8 +108,8 @@ async function command(opts, cmd) {
107
108
  }
108
109
  let isSingleWatchMode = args.includes("--watch");
109
110
  if (!opts.since && !process.env.CI && !hasFlags("--coverage", "--watch", "--watchAll")) {
110
- const isGitRepo = () => cliCommon.runCheck(["git", "rev-parse", "--is-inside-work-tree"]);
111
- const isMercurialRepo = () => cliCommon.runCheck(["hg", "--cwd", ".", "root"]);
111
+ const isGitRepo = () => run.runCheck("git", "rev-parse", "--is-inside-work-tree");
112
+ const isMercurialRepo = () => run.runCheck("hg", "--cwd", ".", "root");
112
113
  if (await isGitRepo() || await isMercurialRepo()) {
113
114
  isSingleWatchMode = true;
114
115
  args.push("--watch");
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.14.0-next.0";
3
+ var version = "0.13.3";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.5.1-next.0";
3
+ var version = "1.5.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.10.1-next.0";
3
+ var version = "1.10.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.34.6-next.1";
3
+ var version = "0.34.6";
4
4
  var dependencies = {
5
5
  "@backstage/catalog-model": "workspace:^",
6
6
  "@backstage/cli-common": "workspace:^",
@@ -93,7 +93,7 @@ var dependencies = {
93
93
  "style-loader": "^3.3.1",
94
94
  sucrase: "^3.20.2",
95
95
  "swc-loader": "^0.2.3",
96
- tar: "^6.1.12",
96
+ tar: "^7.4.3",
97
97
  "ts-checker-rspack-plugin": "^1.1.5",
98
98
  "ts-morph": "^24.0.0",
99
99
  undici: "^7.2.3",
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.19.3-next.0";
3
+ var version = "1.19.2";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.18.4-next.1";
3
+ var version = "0.18.3";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.12.1-next.0";
3
+ var version = "1.12.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.1.18-next.1";
3
+ var version = "1.1.17";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.3.4-next.0";
3
+ var version = "0.3.3";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.13.2-next.0";
3
+ var version = "0.13.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.4.2-next.0";
3
+ var version = "0.4.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.7.14-next.0";
3
+ var version = "1.7.13";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.7.1-next.0";
3
+ var version = "0.7.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.25.7-next.0";
3
+ var version = "0.25.6";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.2.15-next.0";
3
+ var version = "0.2.14";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "1.20.1-next.0";
3
+ var version = "1.20.0";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.12.2-next.0";
3
+ var version = "0.12.1";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var version = "0.3.6-next.0";
3
+ var version = "0.3.5";
4
4
 
5
5
  exports.version = version;
6
6
  //# sourceMappingURL=package.json.cjs.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/cli",
3
- "version": "0.34.6-next.1",
3
+ "version": "0.34.6",
4
4
  "description": "CLI for developing Backstage plugins and apps",
5
5
  "backstage": {
6
6
  "role": "cli"
@@ -47,16 +47,16 @@
47
47
  ]
48
48
  },
49
49
  "dependencies": {
50
- "@backstage/catalog-model": "1.7.6",
51
- "@backstage/cli-common": "0.1.16-next.1",
52
- "@backstage/cli-node": "0.2.16-next.1",
53
- "@backstage/config": "1.3.6",
54
- "@backstage/config-loader": "1.10.7-next.0",
55
- "@backstage/errors": "1.2.7",
56
- "@backstage/eslint-plugin": "0.2.0",
57
- "@backstage/integration": "1.18.3-next.0",
58
- "@backstage/release-manifests": "0.0.13",
59
- "@backstage/types": "1.2.2",
50
+ "@backstage/catalog-model": "^1.7.6",
51
+ "@backstage/cli-common": "^0.1.15",
52
+ "@backstage/cli-node": "^0.2.15",
53
+ "@backstage/config": "^1.3.6",
54
+ "@backstage/config-loader": "^1.10.6",
55
+ "@backstage/errors": "^1.2.7",
56
+ "@backstage/eslint-plugin": "^0.2.0",
57
+ "@backstage/integration": "^1.18.2",
58
+ "@backstage/release-manifests": "^0.0.13",
59
+ "@backstage/types": "^1.2.2",
60
60
  "@manypkg/get-packages": "^1.1.3",
61
61
  "@module-federation/enhanced": "^0.9.0",
62
62
  "@octokit/request": "^8.0.0",
@@ -138,7 +138,7 @@
138
138
  "style-loader": "^3.3.1",
139
139
  "sucrase": "^3.20.2",
140
140
  "swc-loader": "^0.2.3",
141
- "tar": "^6.1.12",
141
+ "tar": "^7.4.3",
142
142
  "ts-checker-rspack-plugin": "^1.1.5",
143
143
  "ts-morph": "^24.0.0",
144
144
  "undici": "^7.2.3",
@@ -151,22 +151,22 @@
151
151
  "zod-validation-error": "^3.4.0"
152
152
  },
153
153
  "devDependencies": {
154
- "@backstage/backend-plugin-api": "1.5.1-next.0",
155
- "@backstage/backend-test-utils": "1.10.1-next.0",
156
- "@backstage/catalog-client": "1.12.1",
157
- "@backstage/config": "1.3.6",
158
- "@backstage/core-app-api": "1.19.3-next.0",
159
- "@backstage/core-components": "0.18.4-next.1",
160
- "@backstage/core-plugin-api": "1.12.1-next.0",
161
- "@backstage/dev-utils": "1.1.18-next.1",
162
- "@backstage/errors": "1.2.7",
163
- "@backstage/plugin-auth-backend": "0.25.7-next.0",
164
- "@backstage/plugin-auth-backend-module-guest-provider": "0.2.15-next.0",
165
- "@backstage/plugin-catalog-node": "1.20.1-next.0",
166
- "@backstage/plugin-scaffolder-node": "0.12.2-next.0",
167
- "@backstage/plugin-scaffolder-node-test-utils": "0.3.6-next.0",
168
- "@backstage/test-utils": "1.7.14-next.0",
169
- "@backstage/theme": "0.7.1-next.0",
154
+ "@backstage/backend-plugin-api": "^1.5.0",
155
+ "@backstage/backend-test-utils": "^1.10.1",
156
+ "@backstage/catalog-client": "^1.12.1",
157
+ "@backstage/config": "^1.3.6",
158
+ "@backstage/core-app-api": "^1.19.2",
159
+ "@backstage/core-components": "^0.18.3",
160
+ "@backstage/core-plugin-api": "^1.12.0",
161
+ "@backstage/dev-utils": "^1.1.17",
162
+ "@backstage/errors": "^1.2.7",
163
+ "@backstage/plugin-auth-backend": "^0.25.6",
164
+ "@backstage/plugin-auth-backend-module-guest-provider": "^0.2.14",
165
+ "@backstage/plugin-catalog-node": "^1.20.0",
166
+ "@backstage/plugin-scaffolder-node": "^0.12.1",
167
+ "@backstage/plugin-scaffolder-node-test-utils": "^0.3.5",
168
+ "@backstage/test-utils": "^1.7.13",
169
+ "@backstage/theme": "^0.7.0",
170
170
  "@pmmmwh/react-refresh-webpack-plugin": "^0.5.7",
171
171
  "@types/cross-spawn": "^6.0.2",
172
172
  "@types/ejs": "^3.1.3",