@backstage/cli 0.18.0-next.3 → 0.18.1-next.1

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 (47) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/dist/cjs/{Lockfile-48dc675e.cjs.js → Lockfile-72b7072e.cjs.js} +25 -9
  3. package/dist/cjs/{PackageGraph-f0f67c07.cjs.js → PackageGraph-5d948874.cjs.js} +17 -9
  4. package/dist/cjs/{build-031df87c.cjs.js → build-f78dac97.cjs.js} +26 -15
  5. package/dist/cjs/{buildBackend-18e7cabd.cjs.js → buildBackend-9ad412b4.cjs.js} +61 -36
  6. package/dist/cjs/{buildWorkspace-914ae12e.cjs.js → buildWorkspace-14c5555a.cjs.js} +7 -7
  7. package/dist/cjs/{bump-1f5a64c9.cjs.js → bump-63ce7a78.cjs.js} +88 -33
  8. package/dist/cjs/{clean-b8299216.cjs.js → clean-5cf1e765.cjs.js} +2 -2
  9. package/dist/cjs/{config-71a2dcd2.cjs.js → config-c432602b.cjs.js} +15 -11
  10. package/dist/cjs/{create-a9be7b0e.cjs.js → create-e0bcf927.cjs.js} +80 -32
  11. package/dist/cjs/{createDistWorkspace-766d0058.cjs.js → createDistWorkspace-8d497122.cjs.js} +137 -65
  12. package/dist/cjs/{createPlugin-d48693e2.cjs.js → createPlugin-97b1a86c.cjs.js} +69 -30
  13. package/dist/cjs/{diff-6421f2ce.cjs.js → diff-b5e5becb.cjs.js} +68 -16
  14. package/dist/cjs/{docs-ec275117.cjs.js → docs-8febf088.cjs.js} +9 -5
  15. package/dist/cjs/{fix-7895b0b3.cjs.js → fix-59653afd.cjs.js} +17 -7
  16. package/dist/cjs/{index-6767b145.cjs.js → index-4b5ea23c.cjs.js} +10 -10
  17. package/dist/cjs/{index-af40a01a.cjs.js → index-64071683.cjs.js} +160 -59
  18. package/dist/cjs/{index-cd8c20e7.cjs.js → index-7fd003de.cjs.js} +39 -12
  19. package/dist/cjs/{index-6b0e28e8.cjs.js → index-abf50752.cjs.js} +57 -38
  20. package/dist/cjs/{info-97caf6c7.cjs.js → info-b7d05969.cjs.js} +20 -6
  21. package/dist/cjs/{install-790d0667.cjs.js → install-b17550a5.cjs.js} +44 -17
  22. package/dist/cjs/{lint-41067178.cjs.js → lint-28cd7a0c.cjs.js} +4 -4
  23. package/dist/cjs/{lint-0206085a.cjs.js → lint-9116fb03.cjs.js} +5 -3
  24. package/dist/cjs/{lint-1bc2c212.cjs.js → lint-b6a6407d.cjs.js} +37 -11
  25. package/dist/cjs/{list-deprecations-2337d838.cjs.js → list-deprecations-645ddf66.cjs.js} +3 -3
  26. package/dist/cjs/{pack-b5ba1570.cjs.js → pack-85bbaf51.cjs.js} +17 -11
  27. package/dist/cjs/packageLintConfigs-bb58088c.cjs.js +83 -0
  28. package/dist/cjs/packageRole-295689e7.cjs.js +59 -0
  29. package/dist/cjs/{packageRoles-b5e829eb.cjs.js → packageRoles-6d4c3119.cjs.js} +5 -3
  30. package/dist/cjs/packageScripts-21f60a13.cjs.js +98 -0
  31. package/dist/cjs/{packages-7ca56467.cjs.js → packages-e645702a.cjs.js} +17 -12
  32. package/dist/cjs/parallel-a8f6219c.cjs.js +187 -0
  33. package/dist/cjs/{paths-c80fe7ab.cjs.js → paths-61bae2a9.cjs.js} +102 -57
  34. package/dist/cjs/{print-adfd6764.cjs.js → print-d340f261.cjs.js} +4 -4
  35. package/dist/cjs/{run-2bb25827.cjs.js → run-25dfd657.cjs.js} +2 -2
  36. package/dist/cjs/{schema-96221fea.cjs.js → schema-cd2a13c6.cjs.js} +9 -5
  37. package/dist/cjs/{tasks-79df19e9.cjs.js → tasks-673f06be.cjs.js} +29 -12
  38. package/dist/cjs/{test-17404205.cjs.js → test-4ea05d08.cjs.js} +3 -3
  39. package/dist/cjs/{validate-ff679735.cjs.js → validate-25c75473.cjs.js} +4 -4
  40. package/dist/index.cjs.js +1 -1
  41. package/package.json +20 -20
  42. package/templates/default-backend-plugin/package.json.hbs +1 -1
  43. package/templates/default-plugin/package.json.hbs +1 -1
  44. package/dist/cjs/packageLintConfigs-41dad1e5.cjs.js +0 -74
  45. package/dist/cjs/packageRole-41000cdd.cjs.js +0 -53
  46. package/dist/cjs/packageScripts-bd563024.cjs.js +0 -96
  47. package/dist/cjs/parallel-8286d3fa.cjs.js +0 -171
@@ -4,12 +4,12 @@ var fs = require('fs-extra');
4
4
  require('semver');
5
5
  require('@yarnpkg/parsers');
6
6
  require('@yarnpkg/lockfile');
7
- var packages = require('./packages-7ca56467.cjs.js');
8
- var index = require('./index-af40a01a.cjs.js');
7
+ var packages = require('./packages-e645702a.cjs.js');
8
+ var index = require('./index-64071683.cjs.js');
9
9
  var chalk = require('chalk');
10
10
  var sortBy = require('lodash/sortBy');
11
11
  var groupBy = require('lodash/groupBy');
12
- var run = require('./run-2bb25827.cjs.js');
12
+ var run = require('./run-25dfd657.cjs.js');
13
13
  require('minimatch');
14
14
  require('@manypkg/get-packages');
15
15
  require('commander');
@@ -39,7 +39,10 @@ class AppRouteStep {
39
39
  const appTsxPath = index.paths.resolveTargetRoot("packages/app/src/App.tsx");
40
40
  const contents = await fs__default["default"].readFile(appTsxPath, "utf-8");
41
41
  let failed = false;
42
- const contentsWithRoute = contents.replace(/(\s*)<\/FlatRoutes>/, `$1 <Route path="${path}" element={${element}} />$1</FlatRoutes>`);
42
+ const contentsWithRoute = contents.replace(
43
+ /(\s*)<\/FlatRoutes>/,
44
+ `$1 <Route path="${path}" element={${element}} />$1</FlatRoutes>`
45
+ );
43
46
  if (contentsWithRoute === contents) {
44
47
  failed = true;
45
48
  }
@@ -47,13 +50,18 @@ class AppRouteStep {
47
50
  if (!componentName) {
48
51
  throw new Error(`Could not find component name in ${element}`);
49
52
  }
50
- const contentsWithImport = contentsWithRoute.replace(/^import /m, `import { ${componentName} } from '${packageName}';
51
- import `);
53
+ const contentsWithImport = contentsWithRoute.replace(
54
+ /^import /m,
55
+ `import { ${componentName} } from '${packageName}';
56
+ import `
57
+ );
52
58
  if (contentsWithImport === contentsWithRoute) {
53
59
  failed = true;
54
60
  }
55
61
  if (failed) {
56
- console.log("Failed to automatically add a route to package/app/src/App.tsx");
62
+ console.log(
63
+ "Failed to automatically add a route to package/app/src/App.tsx"
64
+ );
57
65
  console.log(`Action needed, add the following:`);
58
66
  console.log(`1. import { ${componentName} } from '${packageName}';`);
59
67
  console.log(`2. <Route path="${path}" element={${element}} />`);
@@ -95,12 +103,16 @@ class DependenciesStep {
95
103
  pkgJson[dep.type][dep.name] = dep.query;
96
104
  }
97
105
  for (const depType of depTypes) {
98
- pkgJson[depType] = Object.fromEntries(sortBy__default["default"](Object.entries(pkgJson[depType]), ([key]) => key));
106
+ pkgJson[depType] = Object.fromEntries(
107
+ sortBy__default["default"](Object.entries(pkgJson[depType]), ([key]) => key)
108
+ );
99
109
  }
100
110
  await fs__default["default"].writeJson(pkgPath, pkgJson, { spaces: 2 });
101
111
  }
102
112
  console.log();
103
- console.log(`Running ${chalk__default["default"].blue("yarn install")} to install new versions`);
113
+ console.log(
114
+ `Running ${chalk__default["default"].blue("yarn install")} to install new versions`
115
+ );
104
116
  console.log();
105
117
  await run.run("yarn", ["install"]);
106
118
  }
@@ -128,7 +140,9 @@ const message = createStepDefinition({
128
140
  deserialize(obj) {
129
141
  const { message: msg } = obj;
130
142
  if (!msg || typeof msg !== "string" && !Array.isArray(msg)) {
131
- throw new Error("Invalid install step, 'message' must be a string or array");
143
+ throw new Error(
144
+ "Invalid install step, 'message' must be a string or array"
145
+ );
132
146
  }
133
147
  return new MessageStep({ message: [msg].flat().join("") });
134
148
  },
@@ -149,7 +163,9 @@ async function fetchPluginPackage(id) {
149
163
  const searchNames = [`@backstage/plugin-${id}`, `backstage-plugin-${id}`, id];
150
164
  for (const name of searchNames) {
151
165
  try {
152
- const packageInfo = await packages.fetchPackageInfo(name);
166
+ const packageInfo = await packages.fetchPackageInfo(
167
+ name
168
+ );
153
169
  return packageInfo;
154
170
  } catch (error) {
155
171
  if (error.name !== "NotFoundError") {
@@ -157,7 +173,9 @@ async function fetchPluginPackage(id) {
157
173
  }
158
174
  }
159
175
  }
160
- throw new index.NotFoundError(`No matching package found for '${id}', tried ${searchNames.join(", ")}`);
176
+ throw new index.NotFoundError(
177
+ `No matching package found for '${id}', tried ${searchNames.join(", ")}`
178
+ );
161
179
  }
162
180
  class PluginInstaller {
163
181
  constructor(steps) {
@@ -205,8 +223,13 @@ async function installPluginAndPeerPlugins(pkg) {
205
223
  console.log(`Installing ${pkg.name} AND any peer plugin dependencies.`);
206
224
  for (const [_pluginDepName, pluginDep] of pluginDeps.entries()) {
207
225
  const { pkg: pluginDepPkg, versionToInstall } = pluginDep;
208
- console.log(`Installing plugin: ${pluginDepPkg.name}: ${versionToInstall || pluginDepPkg.version}`);
209
- const steps = await PluginInstaller.resolveSteps(pluginDepPkg, versionToInstall);
226
+ console.log(
227
+ `Installing plugin: ${pluginDepPkg.name}: ${versionToInstall || pluginDepPkg.version}`
228
+ );
229
+ const steps = await PluginInstaller.resolveSteps(
230
+ pluginDepPkg,
231
+ versionToInstall
232
+ );
210
233
  const installer = new PluginInstaller(steps);
211
234
  await installer.run();
212
235
  }
@@ -219,7 +242,9 @@ async function loadPackageJson(plugin) {
219
242
  }
220
243
  async function loadPeerPluginDeps(pkg, pluginMap) {
221
244
  var _a, _b;
222
- for (const [pluginId, pluginVersion] of Object.entries((_b = (_a = pkg.experimentalInstallationRecipe) == null ? void 0 : _a.peerPluginDependencies) != null ? _b : {})) {
245
+ for (const [pluginId, pluginVersion] of Object.entries(
246
+ (_b = (_a = pkg.experimentalInstallationRecipe) == null ? void 0 : _a.peerPluginDependencies) != null ? _b : {}
247
+ )) {
223
248
  const depPkg = await loadPackageJson(pluginId);
224
249
  if (!pluginMap.get(depPkg.name)) {
225
250
  pluginMap.set(depPkg.name, {
@@ -233,11 +258,13 @@ async function loadPeerPluginDeps(pkg, pluginMap) {
233
258
  var install = async (pluginId, cmd) => {
234
259
  const from = pluginId || (cmd == null ? void 0 : cmd.from);
235
260
  if (!from) {
236
- throw new Error("Missing both <plugin-id> or a package.json file path in the --from flag.");
261
+ throw new Error(
262
+ "Missing both <plugin-id> or a package.json file path in the --from flag."
263
+ );
237
264
  }
238
265
  const pkg = await loadPackageJson(from);
239
266
  await installPluginAndPeerPlugins(pkg);
240
267
  };
241
268
 
242
269
  exports["default"] = install;
243
- //# sourceMappingURL=install-790d0667.cjs.js.map
270
+ //# sourceMappingURL=install-b17550a5.cjs.js.map
@@ -2,9 +2,9 @@
2
2
 
3
3
  var chalk = require('chalk');
4
4
  var path = require('path');
5
- var PackageGraph = require('./PackageGraph-f0f67c07.cjs.js');
6
- var parallel = require('./parallel-8286d3fa.cjs.js');
7
- var index = require('./index-af40a01a.cjs.js');
5
+ var PackageGraph = require('./PackageGraph-5d948874.cjs.js');
6
+ var parallel = require('./parallel-a8f6219c.cjs.js');
7
+ var index = require('./index-64071683.cjs.js');
8
8
  require('@manypkg/get-packages');
9
9
  require('@backstage/errors');
10
10
  require('child_process');
@@ -88,4 +88,4 @@ async function command(opts) {
88
88
  }
89
89
 
90
90
  exports.command = command;
91
- //# sourceMappingURL=lint-41067178.cjs.js.map
91
+ //# sourceMappingURL=lint-28cd7a0c.cjs.js.map
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-af40a01a.cjs.js');
3
+ var index = require('./index-64071683.cjs.js');
4
4
  var eslint = require('eslint');
5
5
  require('commander');
6
6
  require('chalk');
@@ -15,7 +15,9 @@ var lint = async (directories, opts) => {
15
15
  fix: opts.fix,
16
16
  extensions: ["js", "jsx", "ts", "tsx", "mjs", "cjs"]
17
17
  });
18
- const results = await eslint$1.lintFiles(directories.length ? directories : ["."]);
18
+ const results = await eslint$1.lintFiles(
19
+ directories.length ? directories : ["."]
20
+ );
19
21
  if (opts.fix) {
20
22
  await eslint.ESLint.outputFixes(results);
21
23
  }
@@ -31,4 +33,4 @@ var lint = async (directories, opts) => {
31
33
  };
32
34
 
33
35
  exports["default"] = lint;
34
- //# sourceMappingURL=lint-0206085a.cjs.js.map
36
+ //# sourceMappingURL=lint-9116fb03.cjs.js.map
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var Lockfile = require('./Lockfile-48dc675e.cjs.js');
3
+ var Lockfile = require('./Lockfile-72b7072e.cjs.js');
4
4
  require('minimatch');
5
5
  require('@manypkg/get-packages');
6
- require('./run-2bb25827.cjs.js');
6
+ require('./run-25dfd657.cjs.js');
7
7
  require('chalk');
8
- var index = require('./index-af40a01a.cjs.js');
8
+ var index = require('./index-64071683.cjs.js');
9
9
  var partition = require('lodash/partition');
10
10
  require('fs-extra');
11
11
  require('semver');
@@ -41,24 +41,50 @@ var lint = async (cmd) => {
41
41
  const result = lockfile.analyze({
42
42
  filter: includedFilter
43
43
  });
44
- logArray(result.invalidRanges, "The following packages versions are invalid and can't be analyzed:", (e) => ` ${e.name} @ ${e.range}`);
44
+ logArray(
45
+ result.invalidRanges,
46
+ "The following packages versions are invalid and can't be analyzed:",
47
+ (e) => ` ${e.name} @ ${e.range}`
48
+ );
45
49
  if (fix) {
46
50
  lockfile.replaceVersions(result.newVersions);
47
51
  await lockfile.save();
48
52
  } else {
49
- const [newVersionsForbidden, newVersionsAllowed] = partition__default["default"](result.newVersions, ({ name }) => forbiddenDuplicatesFilter(name));
53
+ const [newVersionsForbidden, newVersionsAllowed] = partition__default["default"](
54
+ result.newVersions,
55
+ ({ name }) => forbiddenDuplicatesFilter(name)
56
+ );
50
57
  if (newVersionsForbidden.length && !fix) {
51
58
  success = false;
52
59
  }
53
- logArray(newVersionsForbidden, "The following packages must be deduplicated, this can be done automatically with --fix", (e) => ` ${e.name} @ ${e.range} bumped from ${e.oldVersion} to ${e.newVersion}`);
54
- logArray(newVersionsAllowed, "The following packages can be deduplicated, this can be done automatically with --fix", (e) => ` ${e.name} @ ${e.range} bumped from ${e.oldVersion} to ${e.newVersion}`);
60
+ logArray(
61
+ newVersionsForbidden,
62
+ "The following packages must be deduplicated, this can be done automatically with --fix",
63
+ (e) => ` ${e.name} @ ${e.range} bumped from ${e.oldVersion} to ${e.newVersion}`
64
+ );
65
+ logArray(
66
+ newVersionsAllowed,
67
+ "The following packages can be deduplicated, this can be done automatically with --fix",
68
+ (e) => ` ${e.name} @ ${e.range} bumped from ${e.oldVersion} to ${e.newVersion}`
69
+ );
55
70
  }
56
- const [newRangesForbidden, newRangesAllowed] = partition__default["default"](result.newRanges, ({ name }) => forbiddenDuplicatesFilter(name));
71
+ const [newRangesForbidden, newRangesAllowed] = partition__default["default"](
72
+ result.newRanges,
73
+ ({ name }) => forbiddenDuplicatesFilter(name)
74
+ );
57
75
  if (newRangesForbidden.length) {
58
76
  success = false;
59
77
  }
60
- logArray(newRangesForbidden, "The following packages must be deduplicated by updating dependencies in package.json", (e) => ` ${e.name} @ ${e.oldRange} should be changed to ${e.newRange}`);
61
- logArray(newRangesAllowed, "The following packages can be deduplicated by updating dependencies in package.json", (e) => ` ${e.name} @ ${e.oldRange} should be changed to ${e.newRange}`);
78
+ logArray(
79
+ newRangesForbidden,
80
+ "The following packages must be deduplicated by updating dependencies in package.json",
81
+ (e) => ` ${e.name} @ ${e.oldRange} should be changed to ${e.newRange}`
82
+ );
83
+ logArray(
84
+ newRangesAllowed,
85
+ "The following packages can be deduplicated by updating dependencies in package.json",
86
+ (e) => ` ${e.name} @ ${e.oldRange} should be changed to ${e.newRange}`
87
+ );
62
88
  if (!success) {
63
89
  throw new Error("Failed versioning check");
64
90
  }
@@ -78,4 +104,4 @@ function logArray(arr, header, each) {
78
104
  exports["default"] = lint;
79
105
  exports.forbiddenDuplicatesFilter = forbiddenDuplicatesFilter;
80
106
  exports.includedFilter = includedFilter;
81
- //# sourceMappingURL=lint-1bc2c212.cjs.js.map
107
+ //# sourceMappingURL=lint-b6a6407d.cjs.js.map
@@ -3,8 +3,8 @@
3
3
  var chalk = require('chalk');
4
4
  var eslint = require('eslint');
5
5
  var path = require('path');
6
- var index = require('./index-af40a01a.cjs.js');
7
- var PackageGraph = require('./PackageGraph-f0f67c07.cjs.js');
6
+ var index = require('./index-64071683.cjs.js');
7
+ var PackageGraph = require('./PackageGraph-5d948874.cjs.js');
8
8
  require('commander');
9
9
  require('fs-extra');
10
10
  require('semver');
@@ -79,4 +79,4 @@ async function command(opts) {
79
79
  }
80
80
 
81
81
  exports.command = command;
82
- //# sourceMappingURL=list-deprecations-2337d838.cjs.js.map
82
+ //# sourceMappingURL=list-deprecations-645ddf66.cjs.js.map
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var fs = require('fs-extra');
4
- var index = require('./index-af40a01a.cjs.js');
4
+ var index = require('./index-64071683.cjs.js');
5
5
  var path = require('path');
6
6
  require('commander');
7
7
  require('chalk');
@@ -22,14 +22,18 @@ function resolveEntrypoint(pkg, name) {
22
22
  }
23
23
  async function writeReleaseStageEntrypoint(pkg, stage) {
24
24
  await fs__default["default"].ensureDir(index.paths.resolveTarget(stage));
25
- await fs__default["default"].writeJson(index.paths.resolveTarget(stage, PKG_PATH), {
26
- name: pkg.name,
27
- version: pkg.version,
28
- main: resolveEntrypoint(pkg, "main"),
29
- module: resolveEntrypoint(pkg, "module"),
30
- browser: resolveEntrypoint(pkg, "browser"),
31
- types: path.join("..", pkg.publishConfig[`${stage}Types`])
32
- }, { encoding: "utf8", spaces: 2 });
25
+ await fs__default["default"].writeJson(
26
+ index.paths.resolveTarget(stage, PKG_PATH),
27
+ {
28
+ name: pkg.name,
29
+ version: pkg.version,
30
+ main: resolveEntrypoint(pkg, "main"),
31
+ module: resolveEntrypoint(pkg, "module"),
32
+ browser: resolveEntrypoint(pkg, "browser"),
33
+ types: path.join("..", pkg.publishConfig[`${stage}Types`])
34
+ },
35
+ { encoding: "utf8", spaces: 2 }
36
+ );
33
37
  }
34
38
  const pre = async () => {
35
39
  var _a;
@@ -63,10 +67,12 @@ const post = async () => {
63
67
  await fs__default["default"].remove(index.paths.resolveTarget("beta"));
64
68
  }
65
69
  } catch (error) {
66
- console.warn(`Failed to restore package.json during postpack, ${error}. Your package will be fine but you may have ended up with some garbage in the repo.`);
70
+ console.warn(
71
+ `Failed to restore package.json during postpack, ${error}. Your package will be fine but you may have ended up with some garbage in the repo.`
72
+ );
67
73
  }
68
74
  };
69
75
 
70
76
  exports.post = post;
71
77
  exports.pre = pre;
72
- //# sourceMappingURL=pack-b5ba1570.cjs.js.map
78
+ //# sourceMappingURL=pack-85bbaf51.cjs.js.map
@@ -0,0 +1,83 @@
1
+ 'use strict';
2
+
3
+ var fs = require('fs-extra');
4
+ var path = require('path');
5
+ var PackageGraph = require('./PackageGraph-5d948874.cjs.js');
6
+ var run = require('./run-25dfd657.cjs.js');
7
+ require('@manypkg/get-packages');
8
+ require('./index-64071683.cjs.js');
9
+ require('commander');
10
+ require('chalk');
11
+ require('semver');
12
+ require('@backstage/cli-common');
13
+ require('@backstage/errors');
14
+ require('child_process');
15
+ require('util');
16
+
17
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
18
+
19
+ var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
20
+
21
+ const PREFIX = `module.exports = require('@backstage/cli/config/eslint-factory')`;
22
+ async function command() {
23
+ const packages = await PackageGraph.PackageGraph.listTargetPackages();
24
+ const oldConfigs = [
25
+ require.resolve("@backstage/cli/config/eslint.js"),
26
+ require.resolve("@backstage/cli/config/eslint.backend.js")
27
+ ];
28
+ const configPaths = new Array();
29
+ await Promise.all(
30
+ packages.map(async ({ dir, packageJson }) => {
31
+ var _a;
32
+ const configPath = path.resolve(dir, ".eslintrc.js");
33
+ if (!await fs__default["default"].pathExists(configPath)) {
34
+ console.log(`Skipping ${packageJson.name}, missing .eslintrc.js`);
35
+ return;
36
+ }
37
+ let existingConfig;
38
+ try {
39
+ existingConfig = require(configPath);
40
+ } catch (error) {
41
+ console.log(
42
+ `Skipping ${packageJson.name}, failed to load .eslintrc.js, ${error}`
43
+ );
44
+ return;
45
+ }
46
+ const extendsArray = (_a = existingConfig.extends) != null ? _a : [];
47
+ const extendIndex = extendsArray.findIndex((p) => oldConfigs.includes(p));
48
+ if (extendIndex === -1) {
49
+ console.log(
50
+ `Skipping ${packageJson.name}, .eslintrc.js does not extend the legacy config`
51
+ );
52
+ return;
53
+ }
54
+ extendsArray.splice(extendIndex, 1);
55
+ if (extendsArray.length === 0) {
56
+ delete existingConfig.extends;
57
+ }
58
+ if (Object.keys(existingConfig).length > 0) {
59
+ await fs__default["default"].writeFile(
60
+ configPath,
61
+ `${PREFIX}(__dirname, ${JSON.stringify(existingConfig, null, 2)});
62
+ `
63
+ );
64
+ } else {
65
+ await fs__default["default"].writeFile(configPath, `${PREFIX}(__dirname);
66
+ `);
67
+ }
68
+ configPaths.push(configPath);
69
+ })
70
+ );
71
+ let hasPrettier = false;
72
+ try {
73
+ require.resolve("prettier");
74
+ hasPrettier = true;
75
+ } catch {
76
+ }
77
+ if (hasPrettier) {
78
+ await run.runPlain("prettier", "--write", ...configPaths);
79
+ }
80
+ }
81
+
82
+ exports.command = command;
83
+ //# sourceMappingURL=packageLintConfigs-bb58088c.cjs.js.map
@@ -0,0 +1,59 @@
1
+ 'use strict';
2
+
3
+ var fs = require('fs-extra');
4
+ var path = require('path');
5
+ var getPackages = require('@manypkg/get-packages');
6
+ var index = require('./index-64071683.cjs.js');
7
+ var packageRoles = require('./packageRoles-6d4c3119.cjs.js');
8
+ require('commander');
9
+ require('chalk');
10
+ require('semver');
11
+ require('@backstage/cli-common');
12
+ require('@backstage/errors');
13
+ require('zod');
14
+
15
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
16
+
17
+ var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
18
+
19
+ var packageRole = async () => {
20
+ const { packages } = await getPackages.getPackages(index.paths.targetDir);
21
+ await Promise.all(
22
+ packages.map(async ({ dir, packageJson: pkg }) => {
23
+ const { name } = pkg;
24
+ const existingRole = packageRoles.getRoleFromPackage(pkg);
25
+ if (existingRole) {
26
+ return;
27
+ }
28
+ const detectedRole = packageRoles.detectRoleFromPackage(pkg);
29
+ if (!detectedRole) {
30
+ console.error(`No role detected for package ${name}`);
31
+ return;
32
+ }
33
+ console.log(`Detected package role of ${name} as ${detectedRole}`);
34
+ let newPkg = pkg;
35
+ const pkgKeys = Object.keys(pkg);
36
+ if (pkgKeys.includes("backstage")) {
37
+ newPkg.backstage = {
38
+ ...newPkg.backstage,
39
+ role: detectedRole
40
+ };
41
+ } else {
42
+ const index = Math.max(
43
+ pkgKeys.indexOf("version"),
44
+ pkgKeys.indexOf("private"),
45
+ pkgKeys.indexOf("publishConfig")
46
+ ) + 1 || pkgKeys.length;
47
+ const pkgEntries = Object.entries(pkg);
48
+ pkgEntries.splice(index, 0, ["backstage", { role: detectedRole }]);
49
+ newPkg = Object.fromEntries(pkgEntries);
50
+ }
51
+ await fs__default["default"].writeJson(path.resolve(dir, "package.json"), newPkg, {
52
+ spaces: 2
53
+ });
54
+ })
55
+ );
56
+ };
57
+
58
+ exports["default"] = packageRole;
59
+ //# sourceMappingURL=packageRole-295689e7.cjs.js.map
@@ -2,7 +2,7 @@
2
2
 
3
3
  var zod = require('zod');
4
4
  var fs = require('fs-extra');
5
- var index = require('./index-af40a01a.cjs.js');
5
+ var index = require('./index-64071683.cjs.js');
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -78,7 +78,9 @@ function getRoleFromPackage(pkgJson) {
78
78
  if (pkg.backstage) {
79
79
  const { role } = pkg.backstage;
80
80
  if (!role) {
81
- throw new Error(`Package ${pkg.name} must specify a role in the "backstage" field`);
81
+ throw new Error(
82
+ `Package ${pkg.name} must specify a role in the "backstage" field`
83
+ );
82
84
  }
83
85
  return getRoleInfo(role).role;
84
86
  }
@@ -155,4 +157,4 @@ exports.detectRoleFromPackage = detectRoleFromPackage;
155
157
  exports.findRoleFromCommand = findRoleFromCommand;
156
158
  exports.getRoleFromPackage = getRoleFromPackage;
157
159
  exports.getRoleInfo = getRoleInfo;
158
- //# sourceMappingURL=packageRoles-b5e829eb.cjs.js.map
160
+ //# sourceMappingURL=packageRoles-6d4c3119.cjs.js.map
@@ -0,0 +1,98 @@
1
+ 'use strict';
2
+
3
+ var fs = require('fs-extra');
4
+ var path = require('path');
5
+ var PackageGraph = require('./PackageGraph-5d948874.cjs.js');
6
+ var packageRoles = require('./packageRoles-6d4c3119.cjs.js');
7
+ require('@manypkg/get-packages');
8
+ require('./index-64071683.cjs.js');
9
+ require('commander');
10
+ require('chalk');
11
+ require('semver');
12
+ require('@backstage/cli-common');
13
+ require('@backstage/errors');
14
+ require('child_process');
15
+ require('util');
16
+ require('zod');
17
+
18
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
19
+
20
+ var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
21
+
22
+ const configArgPattern = /--config[=\s][^\s$]+/;
23
+ const noStartRoles = ["cli", "common-library"];
24
+ async function command() {
25
+ const packages = await PackageGraph.PackageGraph.listTargetPackages();
26
+ await Promise.all(
27
+ packages.map(async ({ dir, packageJson }) => {
28
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i;
29
+ const role = packageRoles.getRoleFromPackage(packageJson);
30
+ if (!role) {
31
+ return;
32
+ }
33
+ const roleInfo = packageRoles.getRoleInfo(role);
34
+ const hasStart = !noStartRoles.includes(role);
35
+ const needsPack = !(roleInfo.output.includes("bundle") || role === "cli");
36
+ const scripts = (_a = packageJson.scripts) != null ? _a : {};
37
+ const startCmd = ["start"];
38
+ if ((_b = scripts.start) == null ? void 0 : _b.includes("--check")) {
39
+ startCmd.push("--check");
40
+ }
41
+ if ((_c = scripts.start) == null ? void 0 : _c.includes("--config")) {
42
+ startCmd.push(...(_d = scripts.start.match(configArgPattern)) != null ? _d : []);
43
+ }
44
+ const buildCmd = ["build"];
45
+ if ((_e = scripts.build) == null ? void 0 : _e.includes("--minify")) {
46
+ buildCmd.push("--minify");
47
+ }
48
+ if ((_f = scripts.build) == null ? void 0 : _f.includes("--experimental-type-build")) {
49
+ buildCmd.push("--experimental-type-build");
50
+ }
51
+ if ((_g = scripts.build) == null ? void 0 : _g.includes("--config")) {
52
+ buildCmd.push(...(_h = scripts.build.match(configArgPattern)) != null ? _h : []);
53
+ }
54
+ const testCmd = ["test"];
55
+ if ((_i = scripts.test) == null ? void 0 : _i.startsWith("backstage-cli test")) {
56
+ const args = scripts.test.slice("backstage-cli test".length).split(" ").filter(Boolean);
57
+ if (args.includes("--passWithNoTests")) {
58
+ args.splice(args.indexOf("--passWithNoTests"), 1);
59
+ }
60
+ testCmd.push(...args);
61
+ }
62
+ const expectedScripts = {
63
+ ...hasStart && {
64
+ start: `backstage-cli package ${startCmd.join(" ")}`
65
+ },
66
+ build: `backstage-cli package ${buildCmd.join(" ")}`,
67
+ lint: "backstage-cli package lint",
68
+ test: `backstage-cli package ${testCmd.join(" ")}`,
69
+ clean: "backstage-cli package clean",
70
+ ...needsPack && {
71
+ postpack: "backstage-cli package postpack",
72
+ prepack: "backstage-cli package prepack"
73
+ }
74
+ };
75
+ let changed = false;
76
+ const currentScripts = packageJson.scripts = packageJson.scripts || {};
77
+ for (const [name, value] of Object.entries(expectedScripts)) {
78
+ const currentScript = currentScripts[name];
79
+ const isMissing = !currentScript;
80
+ const isDifferent = currentScript !== value;
81
+ const isBackstageScript = currentScript == null ? void 0 : currentScript.includes("backstage-cli");
82
+ if (isMissing || isDifferent && isBackstageScript) {
83
+ changed = true;
84
+ currentScripts[name] = value;
85
+ }
86
+ }
87
+ if (changed) {
88
+ console.log(`Updating scripts for ${packageJson.name}`);
89
+ await fs__default["default"].writeJson(path.resolve(dir, "package.json"), packageJson, {
90
+ spaces: 2
91
+ });
92
+ }
93
+ })
94
+ );
95
+ }
96
+
97
+ exports.command = command;
98
+ //# sourceMappingURL=packageScripts-21f60a13.cjs.js.map
@@ -2,8 +2,8 @@
2
2
 
3
3
  var minimatch = require('minimatch');
4
4
  var getPackages = require('@manypkg/get-packages');
5
- var run = require('./run-2bb25827.cjs.js');
6
- var index = require('./index-af40a01a.cjs.js');
5
+ var run = require('./run-25dfd657.cjs.js');
6
+ var index = require('./index-64071683.cjs.js');
7
7
 
8
8
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
9
9
 
@@ -32,17 +32,22 @@ async function mapDependencies(targetDir, pattern) {
32
32
  packages.push(root);
33
33
  const dependencyMap = /* @__PURE__ */ new Map();
34
34
  for (const pkg of packages) {
35
- const deps = DEP_TYPES.flatMap((t) => {
36
- var _a2;
37
- return Object.entries((_a2 = pkg.packageJson[t]) != null ? _a2 : {});
38
- });
35
+ const deps = DEP_TYPES.flatMap(
36
+ (t) => {
37
+ var _a2;
38
+ return Object.entries((_a2 = pkg.packageJson[t]) != null ? _a2 : {});
39
+ }
40
+ );
39
41
  for (const [name, range] of deps) {
40
42
  if (minimatch__default["default"](name, pattern)) {
41
- dependencyMap.set(name, ((_a = dependencyMap.get(name)) != null ? _a : []).concat({
42
- range,
43
- name: pkg.packageJson.name,
44
- location: pkg.dir
45
- }));
43
+ dependencyMap.set(
44
+ name,
45
+ ((_a = dependencyMap.get(name)) != null ? _a : []).concat({
46
+ range,
47
+ name: pkg.packageJson.name,
48
+ location: pkg.dir
49
+ })
50
+ );
46
51
  }
47
52
  }
48
53
  }
@@ -51,4 +56,4 @@ async function mapDependencies(targetDir, pattern) {
51
56
 
52
57
  exports.fetchPackageInfo = fetchPackageInfo;
53
58
  exports.mapDependencies = mapDependencies;
54
- //# sourceMappingURL=packages-7ca56467.cjs.js.map
59
+ //# sourceMappingURL=packages-e645702a.cjs.js.map