@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.
- package/CHANGELOG.md +52 -0
- package/dist/cjs/{Lockfile-48dc675e.cjs.js → Lockfile-72b7072e.cjs.js} +25 -9
- package/dist/cjs/{PackageGraph-f0f67c07.cjs.js → PackageGraph-5d948874.cjs.js} +17 -9
- package/dist/cjs/{build-031df87c.cjs.js → build-f78dac97.cjs.js} +26 -15
- package/dist/cjs/{buildBackend-18e7cabd.cjs.js → buildBackend-9ad412b4.cjs.js} +61 -36
- package/dist/cjs/{buildWorkspace-914ae12e.cjs.js → buildWorkspace-14c5555a.cjs.js} +7 -7
- package/dist/cjs/{bump-1f5a64c9.cjs.js → bump-63ce7a78.cjs.js} +88 -33
- package/dist/cjs/{clean-b8299216.cjs.js → clean-5cf1e765.cjs.js} +2 -2
- package/dist/cjs/{config-71a2dcd2.cjs.js → config-c432602b.cjs.js} +15 -11
- package/dist/cjs/{create-a9be7b0e.cjs.js → create-e0bcf927.cjs.js} +80 -32
- package/dist/cjs/{createDistWorkspace-766d0058.cjs.js → createDistWorkspace-8d497122.cjs.js} +137 -65
- package/dist/cjs/{createPlugin-d48693e2.cjs.js → createPlugin-97b1a86c.cjs.js} +69 -30
- package/dist/cjs/{diff-6421f2ce.cjs.js → diff-b5e5becb.cjs.js} +68 -16
- package/dist/cjs/{docs-ec275117.cjs.js → docs-8febf088.cjs.js} +9 -5
- package/dist/cjs/{fix-7895b0b3.cjs.js → fix-59653afd.cjs.js} +17 -7
- package/dist/cjs/{index-6767b145.cjs.js → index-4b5ea23c.cjs.js} +10 -10
- package/dist/cjs/{index-af40a01a.cjs.js → index-64071683.cjs.js} +160 -59
- package/dist/cjs/{index-cd8c20e7.cjs.js → index-7fd003de.cjs.js} +39 -12
- package/dist/cjs/{index-6b0e28e8.cjs.js → index-abf50752.cjs.js} +57 -38
- package/dist/cjs/{info-97caf6c7.cjs.js → info-b7d05969.cjs.js} +20 -6
- package/dist/cjs/{install-790d0667.cjs.js → install-b17550a5.cjs.js} +44 -17
- package/dist/cjs/{lint-41067178.cjs.js → lint-28cd7a0c.cjs.js} +4 -4
- package/dist/cjs/{lint-0206085a.cjs.js → lint-9116fb03.cjs.js} +5 -3
- package/dist/cjs/{lint-1bc2c212.cjs.js → lint-b6a6407d.cjs.js} +37 -11
- package/dist/cjs/{list-deprecations-2337d838.cjs.js → list-deprecations-645ddf66.cjs.js} +3 -3
- package/dist/cjs/{pack-b5ba1570.cjs.js → pack-85bbaf51.cjs.js} +17 -11
- package/dist/cjs/packageLintConfigs-bb58088c.cjs.js +83 -0
- package/dist/cjs/packageRole-295689e7.cjs.js +59 -0
- package/dist/cjs/{packageRoles-b5e829eb.cjs.js → packageRoles-6d4c3119.cjs.js} +5 -3
- package/dist/cjs/packageScripts-21f60a13.cjs.js +98 -0
- package/dist/cjs/{packages-7ca56467.cjs.js → packages-e645702a.cjs.js} +17 -12
- package/dist/cjs/parallel-a8f6219c.cjs.js +187 -0
- package/dist/cjs/{paths-c80fe7ab.cjs.js → paths-61bae2a9.cjs.js} +102 -57
- package/dist/cjs/{print-adfd6764.cjs.js → print-d340f261.cjs.js} +4 -4
- package/dist/cjs/{run-2bb25827.cjs.js → run-25dfd657.cjs.js} +2 -2
- package/dist/cjs/{schema-96221fea.cjs.js → schema-cd2a13c6.cjs.js} +9 -5
- package/dist/cjs/{tasks-79df19e9.cjs.js → tasks-673f06be.cjs.js} +29 -12
- package/dist/cjs/{test-17404205.cjs.js → test-4ea05d08.cjs.js} +3 -3
- package/dist/cjs/{validate-ff679735.cjs.js → validate-25c75473.cjs.js} +4 -4
- package/dist/index.cjs.js +1 -1
- package/package.json +20 -20
- package/templates/default-backend-plugin/package.json.hbs +1 -1
- package/templates/default-plugin/package.json.hbs +1 -1
- package/dist/cjs/packageLintConfigs-41dad1e5.cjs.js +0 -74
- package/dist/cjs/packageRole-41000cdd.cjs.js +0 -53
- package/dist/cjs/packageScripts-bd563024.cjs.js +0 -96
- 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-
|
|
8
|
-
var index = require('./index-
|
|
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-
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
209
|
-
|
|
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(
|
|
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(
|
|
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-
|
|
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-
|
|
6
|
-
var parallel = require('./parallel-
|
|
7
|
-
var index = require('./index-
|
|
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-
|
|
91
|
+
//# sourceMappingURL=lint-28cd7a0c.cjs.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
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(
|
|
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-
|
|
36
|
+
//# sourceMappingURL=lint-9116fb03.cjs.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var Lockfile = require('./Lockfile-
|
|
3
|
+
var Lockfile = require('./Lockfile-72b7072e.cjs.js');
|
|
4
4
|
require('minimatch');
|
|
5
5
|
require('@manypkg/get-packages');
|
|
6
|
-
require('./run-
|
|
6
|
+
require('./run-25dfd657.cjs.js');
|
|
7
7
|
require('chalk');
|
|
8
|
-
var index = require('./index-
|
|
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(
|
|
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"](
|
|
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(
|
|
54
|
-
|
|
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"](
|
|
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(
|
|
61
|
-
|
|
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-
|
|
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-
|
|
7
|
-
var PackageGraph = require('./PackageGraph-
|
|
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-
|
|
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-
|
|
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(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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(
|
|
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-
|
|
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-
|
|
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(
|
|
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-
|
|
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-
|
|
6
|
-
var index = require('./index-
|
|
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(
|
|
36
|
-
|
|
37
|
-
|
|
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(
|
|
42
|
-
|
|
43
|
-
name:
|
|
44
|
-
|
|
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-
|
|
59
|
+
//# sourceMappingURL=packages-e645702a.cjs.js.map
|