@backstage/cli-module-migrate 0.0.0-nightly-20260317031259
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 +15 -0
- package/README.md +20 -0
- package/bin/backstage-cli-module-migrate +32 -0
- package/dist/commands/packageExports.cjs.js +15 -0
- package/dist/commands/packageExports.cjs.js.map +1 -0
- package/dist/commands/packageLintConfigs.cjs.js +77 -0
- package/dist/commands/packageLintConfigs.cjs.js.map +1 -0
- package/dist/commands/packageRole.cjs.js +57 -0
- package/dist/commands/packageRole.cjs.js.map +1 -0
- package/dist/commands/packageScripts.cjs.js +87 -0
- package/dist/commands/packageScripts.cjs.js.map +1 -0
- package/dist/commands/reactRouterDeps.cjs.js +51 -0
- package/dist/commands/reactRouterDeps.cjs.js.map +1 -0
- package/dist/commands/versions/bump.cjs.js +403 -0
- package/dist/commands/versions/bump.cjs.js.map +1 -0
- package/dist/commands/versions/migrate.cjs.js +133 -0
- package/dist/commands/versions/migrate.cjs.js.map +1 -0
- package/dist/index.cjs.js +60 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/lib/utils.cjs.js +44 -0
- package/dist/lib/utils.cjs.js.map +1 -0
- package/dist/lib/versioning/packages.cjs.js +71 -0
- package/dist/lib/versioning/packages.cjs.js.map +1 -0
- package/dist/lib/versioning/yarn.cjs.js +28 -0
- package/dist/lib/versioning/yarn.cjs.js.map +1 -0
- package/dist/package.json.cjs.js +94 -0
- package/dist/package.json.cjs.js.map +1 -0
- package/package.json +64 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# @backstage/cli-module-migrate
|
|
2
|
+
|
|
3
|
+
## 0.0.0-nightly-20260317031259
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 329f394: Initial release of the CLI module packages. Each module provides a set of commands that can be discovered automatically by `@backstage/cli` or executed standalone.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies
|
|
12
|
+
- @backstage/cli-node@0.0.0-nightly-20260317031259
|
|
13
|
+
- @backstage/cli-common@0.0.0-nightly-20260317031259
|
|
14
|
+
- @backstage/errors@1.2.7
|
|
15
|
+
- @backstage/release-manifests@0.0.13
|
package/README.md
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# @backstage/cli-module-migrate
|
|
2
|
+
|
|
3
|
+
CLI module that provides migration and version management commands for the Backstage CLI.
|
|
4
|
+
|
|
5
|
+
## Commands
|
|
6
|
+
|
|
7
|
+
| Command | Description |
|
|
8
|
+
| :----------------------------- | :---------------------------------------------------------------- |
|
|
9
|
+
| `versions:bump` | Bump Backstage packages to the latest versions |
|
|
10
|
+
| `versions:migrate` | Migrate plugins moved to the @backstage-community namespace |
|
|
11
|
+
| `migrate package-roles` | Add package role field to packages that don't have it |
|
|
12
|
+
| `migrate package-scripts` | Set package scripts according to each package role |
|
|
13
|
+
| `migrate package-exports` | Synchronize package subpath export definitions |
|
|
14
|
+
| `migrate package-lint-configs` | Migrates all packages to use @backstage/cli/config/eslint-factory |
|
|
15
|
+
| `migrate react-router-deps` | Migrates the react-router dependencies to be peer dependencies |
|
|
16
|
+
|
|
17
|
+
## Documentation
|
|
18
|
+
|
|
19
|
+
- [Backstage Readme](https://github.com/backstage/backstage/blob/master/README.md)
|
|
20
|
+
- [Backstage Documentation](https://backstage.io/docs)
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2024 The Backstage Authors
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
const path = require('node:path');
|
|
19
|
+
|
|
20
|
+
/* eslint-disable-next-line no-restricted-syntax */
|
|
21
|
+
const isLocal = require('node:fs').existsSync(
|
|
22
|
+
path.resolve(__dirname, '../src'),
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
if (isLocal) {
|
|
26
|
+
require('@backstage/cli-node/config/nodeTransform.cjs');
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const { runCliModule } = require('@backstage/cli-node');
|
|
30
|
+
const cliModule = require(isLocal ? '../src/index' : '..').default;
|
|
31
|
+
const pkg = require('../package.json');
|
|
32
|
+
runCliModule({ module: cliModule, name: pkg.name, version: pkg.version });
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var cleye = require('cleye');
|
|
6
|
+
|
|
7
|
+
var packageExports = async ({ args, info }) => {
|
|
8
|
+
cleye.cli({ help: info, booleanFlagNegation: true }, void 0, args);
|
|
9
|
+
throw new Error(
|
|
10
|
+
"The `migrate package-exports` command has been removed, use `repo fix` instead."
|
|
11
|
+
);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
exports.default = packageExports;
|
|
15
|
+
//# sourceMappingURL=packageExports.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packageExports.cjs.js","sources":["../../src/commands/packageExports.ts"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { cli } from 'cleye';\nimport type { CliCommandContext } from '@backstage/cli-node';\n\nexport default async ({ args, info }: CliCommandContext) => {\n cli({ help: info, booleanFlagNegation: true }, undefined, args);\n throw new Error(\n 'The `migrate package-exports` command has been removed, use `repo fix` instead.',\n );\n};\n"],"names":["cli"],"mappings":";;;;;;AAmBA,qBAAe,OAAO,EAAE,IAAA,EAAM,IAAA,EAAK,KAAyB;AAC1D,EAAAA,SAAA,CAAI,EAAE,IAAA,EAAM,IAAA,EAAM,qBAAqB,IAAA,EAAK,EAAG,QAAW,IAAI,CAAA;AAC9D,EAAA,MAAM,IAAI,KAAA;AAAA,IACR;AAAA,GACF;AACF,CAAA;;;;"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var cleye = require('cleye');
|
|
6
|
+
var fs = require('fs-extra');
|
|
7
|
+
var node_path = require('node:path');
|
|
8
|
+
var cliNode = require('@backstage/cli-node');
|
|
9
|
+
var cliCommon = require('@backstage/cli-common');
|
|
10
|
+
|
|
11
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
12
|
+
|
|
13
|
+
var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
|
|
14
|
+
|
|
15
|
+
const PREFIX = `module.exports = require('@backstage/cli/config/eslint-factory')`;
|
|
16
|
+
var packageLintConfigs = async ({ args, info }) => {
|
|
17
|
+
cleye.cli({ help: info, booleanFlagNegation: true }, void 0, args);
|
|
18
|
+
const packages = await cliNode.PackageGraph.listTargetPackages();
|
|
19
|
+
const oldConfigs = [
|
|
20
|
+
require.resolve("@backstage/cli/config/eslint.js"),
|
|
21
|
+
require.resolve("@backstage/cli/config/eslint.backend.js")
|
|
22
|
+
];
|
|
23
|
+
const configPaths = new Array();
|
|
24
|
+
await Promise.all(
|
|
25
|
+
packages.map(async ({ dir, packageJson }) => {
|
|
26
|
+
const configPath = node_path.resolve(dir, ".eslintrc.js");
|
|
27
|
+
if (!await fs__default.default.pathExists(configPath)) {
|
|
28
|
+
console.log(`Skipping ${packageJson.name}, missing .eslintrc.js`);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
let existingConfig;
|
|
32
|
+
try {
|
|
33
|
+
existingConfig = require(configPath);
|
|
34
|
+
} catch (error) {
|
|
35
|
+
console.log(
|
|
36
|
+
`Skipping ${packageJson.name}, failed to load .eslintrc.js, ${error}`
|
|
37
|
+
);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const extendsArray = existingConfig.extends ?? [];
|
|
41
|
+
const extendIndex = extendsArray.findIndex((p) => oldConfigs.includes(p));
|
|
42
|
+
if (extendIndex === -1) {
|
|
43
|
+
console.log(
|
|
44
|
+
`Skipping ${packageJson.name}, .eslintrc.js does not extend the legacy config`
|
|
45
|
+
);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
extendsArray.splice(extendIndex, 1);
|
|
49
|
+
if (extendsArray.length === 0) {
|
|
50
|
+
delete existingConfig.extends;
|
|
51
|
+
}
|
|
52
|
+
if (Object.keys(existingConfig).length > 0) {
|
|
53
|
+
await fs__default.default.writeFile(
|
|
54
|
+
configPath,
|
|
55
|
+
`${PREFIX}(__dirname, ${JSON.stringify(existingConfig, null, 2)});
|
|
56
|
+
`
|
|
57
|
+
);
|
|
58
|
+
} else {
|
|
59
|
+
await fs__default.default.writeFile(configPath, `${PREFIX}(__dirname);
|
|
60
|
+
`);
|
|
61
|
+
}
|
|
62
|
+
configPaths.push(configPath);
|
|
63
|
+
})
|
|
64
|
+
);
|
|
65
|
+
let hasPrettier = false;
|
|
66
|
+
try {
|
|
67
|
+
require.resolve("prettier");
|
|
68
|
+
hasPrettier = true;
|
|
69
|
+
} catch {
|
|
70
|
+
}
|
|
71
|
+
if (hasPrettier) {
|
|
72
|
+
await cliCommon.runOutput(["prettier", "--write", ...configPaths]);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
exports.default = packageLintConfigs;
|
|
77
|
+
//# sourceMappingURL=packageLintConfigs.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packageLintConfigs.cjs.js","sources":["../../src/commands/packageLintConfigs.ts"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { cli } from 'cleye';\nimport fs from 'fs-extra';\nimport { resolve as resolvePath } from 'node:path';\nimport { PackageGraph } from '@backstage/cli-node';\nimport { runOutput } from '@backstage/cli-common';\nimport type { CliCommandContext } from '@backstage/cli-node';\n\nconst PREFIX = `module.exports = require('@backstage/cli/config/eslint-factory')`;\n\nexport default async ({ args, info }: CliCommandContext) => {\n cli({ help: info, booleanFlagNegation: true }, undefined, args);\n const packages = await PackageGraph.listTargetPackages();\n\n const oldConfigs = [\n require.resolve('@backstage/cli/config/eslint.js'),\n require.resolve('@backstage/cli/config/eslint.backend.js'),\n ];\n\n const configPaths = new Array<string>();\n await Promise.all(\n packages.map(async ({ dir, packageJson }) => {\n const configPath = resolvePath(dir, '.eslintrc.js');\n if (!(await fs.pathExists(configPath))) {\n console.log(`Skipping ${packageJson.name}, missing .eslintrc.js`);\n return;\n }\n let existingConfig: Record<string, unknown>;\n try {\n existingConfig = require(configPath);\n } catch (error) {\n console.log(\n `Skipping ${packageJson.name}, failed to load .eslintrc.js, ${error}`,\n );\n return;\n }\n\n // Only transform configs that extend the old config files, and\n // we remove that entry from the extends array.\n const extendsArray = (existingConfig.extends as string[]) ?? [];\n const extendIndex = extendsArray.findIndex(p => oldConfigs.includes(p));\n if (extendIndex === -1) {\n console.log(\n `Skipping ${packageJson.name}, .eslintrc.js does not extend the legacy config`,\n );\n return;\n }\n extendsArray.splice(extendIndex, 1);\n if (extendsArray.length === 0) {\n delete existingConfig.extends;\n }\n\n if (Object.keys(existingConfig).length > 0) {\n await fs.writeFile(\n configPath,\n `${PREFIX}(__dirname, ${JSON.stringify(existingConfig, null, 2)});\\n`,\n );\n } else {\n await fs.writeFile(configPath, `${PREFIX}(__dirname);\\n`);\n }\n configPaths.push(configPath);\n }),\n );\n\n // If prettier is present, then we run that too\n let hasPrettier = false;\n try {\n require.resolve('prettier');\n hasPrettier = true;\n } catch {\n /* ignore */\n }\n\n if (hasPrettier) {\n await runOutput(['prettier', '--write', ...configPaths]);\n }\n};\n"],"names":["cli","PackageGraph","resolvePath","fs","runOutput"],"mappings":";;;;;;;;;;;;;;AAuBA,MAAM,MAAA,GAAS,CAAA,gEAAA,CAAA;AAEf,yBAAe,OAAO,EAAE,IAAA,EAAM,IAAA,EAAK,KAAyB;AAC1D,EAAAA,SAAA,CAAI,EAAE,IAAA,EAAM,IAAA,EAAM,qBAAqB,IAAA,EAAK,EAAG,QAAW,IAAI,CAAA;AAC9D,EAAA,MAAM,QAAA,GAAW,MAAMC,oBAAA,CAAa,kBAAA,EAAmB;AAEvD,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,OAAA,CAAQ,QAAQ,iCAAiC,CAAA;AAAA,IACjD,OAAA,CAAQ,QAAQ,yCAAyC;AAAA,GAC3D;AAEA,EAAA,MAAM,WAAA,GAAc,IAAI,KAAA,EAAc;AACtC,EAAA,MAAM,OAAA,CAAQ,GAAA;AAAA,IACZ,SAAS,GAAA,CAAI,OAAO,EAAE,GAAA,EAAK,aAAY,KAAM;AAC3C,MAAA,MAAM,UAAA,GAAaC,iBAAA,CAAY,GAAA,EAAK,cAAc,CAAA;AAClD,MAAA,IAAI,CAAE,MAAMC,mBAAA,CAAG,UAAA,CAAW,UAAU,CAAA,EAAI;AACtC,QAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,SAAA,EAAY,WAAA,CAAY,IAAI,CAAA,sBAAA,CAAwB,CAAA;AAChE,QAAA;AAAA,MACF;AACA,MAAA,IAAI,cAAA;AACJ,MAAA,IAAI;AACF,QAAA,cAAA,GAAiB,QAAQ,UAAU,CAAA;AAAA,MACrC,SAAS,KAAA,EAAO;AACd,QAAA,OAAA,CAAQ,GAAA;AAAA,UACN,CAAA,SAAA,EAAY,WAAA,CAAY,IAAI,CAAA,+BAAA,EAAkC,KAAK,CAAA;AAAA,SACrE;AACA,QAAA;AAAA,MACF;AAIA,MAAA,MAAM,YAAA,GAAgB,cAAA,CAAe,OAAA,IAAwB,EAAC;AAC9D,MAAA,MAAM,cAAc,YAAA,CAAa,SAAA,CAAU,OAAK,UAAA,CAAW,QAAA,CAAS,CAAC,CAAC,CAAA;AACtE,MAAA,IAAI,gBAAgB,EAAA,EAAI;AACtB,QAAA,OAAA,CAAQ,GAAA;AAAA,UACN,CAAA,SAAA,EAAY,YAAY,IAAI,CAAA,gDAAA;AAAA,SAC9B;AACA,QAAA;AAAA,MACF;AACA,MAAA,YAAA,CAAa,MAAA,CAAO,aAAa,CAAC,CAAA;AAClC,MAAA,IAAI,YAAA,CAAa,WAAW,CAAA,EAAG;AAC7B,QAAA,OAAO,cAAA,CAAe,OAAA;AAAA,MACxB;AAEA,MAAA,IAAI,MAAA,CAAO,IAAA,CAAK,cAAc,CAAA,CAAE,SAAS,CAAA,EAAG;AAC1C,QAAA,MAAMA,mBAAA,CAAG,SAAA;AAAA,UACP,UAAA;AAAA,UACA,CAAA,EAAG,MAAM,CAAA,YAAA,EAAe,IAAA,CAAK,UAAU,cAAA,EAAgB,IAAA,EAAM,CAAC,CAAC,CAAA;AAAA;AAAA,SACjE;AAAA,MACF,CAAA,MAAO;AACL,QAAA,MAAMA,mBAAA,CAAG,SAAA,CAAU,UAAA,EAAY,CAAA,EAAG,MAAM,CAAA;AAAA,CAAgB,CAAA;AAAA,MAC1D;AACA,MAAA,WAAA,CAAY,KAAK,UAAU,CAAA;AAAA,IAC7B,CAAC;AAAA,GACH;AAGA,EAAA,IAAI,WAAA,GAAc,KAAA;AAClB,EAAA,IAAI;AACF,IAAA,OAAA,CAAQ,QAAQ,UAAU,CAAA;AAC1B,IAAA,WAAA,GAAc,IAAA;AAAA,EAChB,CAAA,CAAA,MAAQ;AAAA,EAER;AAEA,EAAA,IAAI,WAAA,EAAa;AACf,IAAA,MAAMC,oBAAU,CAAC,UAAA,EAAY,SAAA,EAAW,GAAG,WAAW,CAAC,CAAA;AAAA,EACzD;AACF,CAAA;;;;"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var cleye = require('cleye');
|
|
6
|
+
var fs = require('fs-extra');
|
|
7
|
+
var node_path = require('node:path');
|
|
8
|
+
var getPackages = require('@manypkg/get-packages');
|
|
9
|
+
var cliNode = require('@backstage/cli-node');
|
|
10
|
+
var cliCommon = require('@backstage/cli-common');
|
|
11
|
+
|
|
12
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
13
|
+
|
|
14
|
+
var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
|
|
15
|
+
|
|
16
|
+
var packageRole = async ({ args, info }) => {
|
|
17
|
+
cleye.cli({ help: info, booleanFlagNegation: true }, void 0, args);
|
|
18
|
+
const { packages } = await getPackages.getPackages(cliCommon.targetPaths.dir);
|
|
19
|
+
await Promise.all(
|
|
20
|
+
packages.map(async ({ dir, packageJson: pkg }) => {
|
|
21
|
+
const { name } = pkg;
|
|
22
|
+
const existingRole = cliNode.PackageRoles.getRoleFromPackage(pkg);
|
|
23
|
+
if (existingRole) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const detectedRole = cliNode.PackageRoles.detectRoleFromPackage(pkg);
|
|
27
|
+
if (!detectedRole) {
|
|
28
|
+
console.error(`No role detected for package ${name}`);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
console.log(`Detected package role of ${name} as ${detectedRole}`);
|
|
32
|
+
let newPkg = pkg;
|
|
33
|
+
const pkgKeys = Object.keys(pkg);
|
|
34
|
+
if (pkgKeys.includes("backstage")) {
|
|
35
|
+
newPkg.backstage = {
|
|
36
|
+
...newPkg.backstage,
|
|
37
|
+
role: detectedRole
|
|
38
|
+
};
|
|
39
|
+
} else {
|
|
40
|
+
const index = Math.max(
|
|
41
|
+
pkgKeys.indexOf("version"),
|
|
42
|
+
pkgKeys.indexOf("private"),
|
|
43
|
+
pkgKeys.indexOf("publishConfig")
|
|
44
|
+
) + 1 || pkgKeys.length;
|
|
45
|
+
const pkgEntries = Object.entries(pkg);
|
|
46
|
+
pkgEntries.splice(index, 0, ["backstage", { role: detectedRole }]);
|
|
47
|
+
newPkg = Object.fromEntries(pkgEntries);
|
|
48
|
+
}
|
|
49
|
+
await fs__default.default.writeJson(node_path.resolve(dir, "package.json"), newPkg, {
|
|
50
|
+
spaces: 2
|
|
51
|
+
});
|
|
52
|
+
})
|
|
53
|
+
);
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
exports.default = packageRole;
|
|
57
|
+
//# sourceMappingURL=packageRole.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packageRole.cjs.js","sources":["../../src/commands/packageRole.ts"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { cli } from 'cleye';\nimport fs from 'fs-extra';\nimport { resolve as resolvePath } from 'node:path';\nimport { getPackages } from '@manypkg/get-packages';\nimport { PackageRoles } from '@backstage/cli-node';\nimport { targetPaths } from '@backstage/cli-common';\nimport type { CliCommandContext } from '@backstage/cli-node';\n\nexport default async ({ args, info }: CliCommandContext) => {\n cli({ help: info, booleanFlagNegation: true }, undefined, args);\n const { packages } = await getPackages(targetPaths.dir);\n\n await Promise.all(\n packages.map(async ({ dir, packageJson: pkg }) => {\n const { name } = pkg;\n const existingRole = PackageRoles.getRoleFromPackage(pkg);\n if (existingRole) {\n return;\n }\n\n const detectedRole = PackageRoles.detectRoleFromPackage(pkg);\n if (!detectedRole) {\n console.error(`No role detected for package ${name}`);\n return;\n }\n\n console.log(`Detected package role of ${name} as ${detectedRole}`);\n\n let newPkg = pkg as any;\n\n const pkgKeys = Object.keys(pkg);\n if (pkgKeys.includes('backstage')) {\n newPkg.backstage = {\n ...newPkg.backstage,\n role: detectedRole,\n };\n } else {\n // We insert the backstage field after one of these fields, otherwise at the end\n const index =\n Math.max(\n pkgKeys.indexOf('version'),\n pkgKeys.indexOf('private'),\n pkgKeys.indexOf('publishConfig'),\n ) + 1 || pkgKeys.length;\n\n const pkgEntries = Object.entries(pkg);\n pkgEntries.splice(index, 0, ['backstage', { role: detectedRole }]);\n newPkg = Object.fromEntries(pkgEntries);\n }\n\n await fs.writeJson(resolvePath(dir, 'package.json'), newPkg, {\n spaces: 2,\n });\n }),\n );\n};\n"],"names":["cli","getPackages","targetPaths","PackageRoles","fs","resolvePath"],"mappings":";;;;;;;;;;;;;;;AAwBA,kBAAe,OAAO,EAAE,IAAA,EAAM,IAAA,EAAK,KAAyB;AAC1D,EAAAA,SAAA,CAAI,EAAE,IAAA,EAAM,IAAA,EAAM,qBAAqB,IAAA,EAAK,EAAG,QAAW,IAAI,CAAA;AAC9D,EAAA,MAAM,EAAE,QAAA,EAAS,GAAI,MAAMC,uBAAA,CAAYC,sBAAY,GAAG,CAAA;AAEtD,EAAA,MAAM,OAAA,CAAQ,GAAA;AAAA,IACZ,SAAS,GAAA,CAAI,OAAO,EAAE,GAAA,EAAK,WAAA,EAAa,KAAI,KAAM;AAChD,MAAA,MAAM,EAAE,MAAK,GAAI,GAAA;AACjB,MAAA,MAAM,YAAA,GAAeC,oBAAA,CAAa,kBAAA,CAAmB,GAAG,CAAA;AACxD,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,YAAA,GAAeA,oBAAA,CAAa,qBAAA,CAAsB,GAAG,CAAA;AAC3D,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,OAAA,CAAQ,KAAA,CAAM,CAAA,6BAAA,EAAgC,IAAI,CAAA,CAAE,CAAA;AACpD,QAAA;AAAA,MACF;AAEA,MAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,yBAAA,EAA4B,IAAI,CAAA,IAAA,EAAO,YAAY,CAAA,CAAE,CAAA;AAEjE,MAAA,IAAI,MAAA,GAAS,GAAA;AAEb,MAAA,MAAM,OAAA,GAAU,MAAA,CAAO,IAAA,CAAK,GAAG,CAAA;AAC/B,MAAA,IAAI,OAAA,CAAQ,QAAA,CAAS,WAAW,CAAA,EAAG;AACjC,QAAA,MAAA,CAAO,SAAA,GAAY;AAAA,UACjB,GAAG,MAAA,CAAO,SAAA;AAAA,UACV,IAAA,EAAM;AAAA,SACR;AAAA,MACF,CAAA,MAAO;AAEL,QAAA,MAAM,QACJ,IAAA,CAAK,GAAA;AAAA,UACH,OAAA,CAAQ,QAAQ,SAAS,CAAA;AAAA,UACzB,OAAA,CAAQ,QAAQ,SAAS,CAAA;AAAA,UACzB,OAAA,CAAQ,QAAQ,eAAe;AAAA,SACjC,GAAI,KAAK,OAAA,CAAQ,MAAA;AAEnB,QAAA,MAAM,UAAA,GAAa,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AACrC,QAAA,UAAA,CAAW,MAAA,CAAO,OAAO,CAAA,EAAG,CAAC,aAAa,EAAE,IAAA,EAAM,YAAA,EAAc,CAAC,CAAA;AACjE,QAAA,MAAA,GAAS,MAAA,CAAO,YAAY,UAAU,CAAA;AAAA,MACxC;AAEA,MAAA,MAAMC,oBAAG,SAAA,CAAUC,iBAAA,CAAY,GAAA,EAAK,cAAc,GAAG,MAAA,EAAQ;AAAA,QAC3D,MAAA,EAAQ;AAAA,OACT,CAAA;AAAA,IACH,CAAC;AAAA,GACH;AACF,CAAA;;;;"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var cleye = require('cleye');
|
|
6
|
+
var fs = require('fs-extra');
|
|
7
|
+
var node_path = require('node:path');
|
|
8
|
+
var cliNode = require('@backstage/cli-node');
|
|
9
|
+
|
|
10
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
11
|
+
|
|
12
|
+
var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
|
|
13
|
+
|
|
14
|
+
const configArgPattern = /--config[=\s][^\s$]+/;
|
|
15
|
+
const noStartRoles = ["cli", "cli-module", "common-library"];
|
|
16
|
+
var packageScripts = async ({ args, info }) => {
|
|
17
|
+
cleye.cli({ help: info, booleanFlagNegation: true }, void 0, args);
|
|
18
|
+
const packages = await cliNode.PackageGraph.listTargetPackages();
|
|
19
|
+
await Promise.all(
|
|
20
|
+
packages.map(async ({ dir, packageJson }) => {
|
|
21
|
+
const role = cliNode.PackageRoles.getRoleFromPackage(packageJson);
|
|
22
|
+
if (!role) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const roleInfo = cliNode.PackageRoles.getRoleInfo(role);
|
|
26
|
+
const hasStart = !noStartRoles.includes(role);
|
|
27
|
+
const needsPack = !(roleInfo.output.includes("bundle") || role === "cli");
|
|
28
|
+
const scripts = packageJson.scripts ?? {};
|
|
29
|
+
const startCmd = ["start"];
|
|
30
|
+
if (scripts.start?.includes("--check")) {
|
|
31
|
+
startCmd.push("--check");
|
|
32
|
+
}
|
|
33
|
+
if (scripts.start?.includes("--config")) {
|
|
34
|
+
startCmd.push(...scripts.start.match(configArgPattern) ?? []);
|
|
35
|
+
}
|
|
36
|
+
const buildCmd = ["build"];
|
|
37
|
+
if (scripts.build?.includes("--minify")) {
|
|
38
|
+
buildCmd.push("--minify");
|
|
39
|
+
}
|
|
40
|
+
if (scripts.build?.includes("--config")) {
|
|
41
|
+
buildCmd.push(...scripts.build.match(configArgPattern) ?? []);
|
|
42
|
+
}
|
|
43
|
+
const testCmd = ["test"];
|
|
44
|
+
if (scripts.test?.startsWith("backstage-cli test")) {
|
|
45
|
+
const testArgs = scripts.test.slice("backstage-cli test".length).split(" ").filter(Boolean);
|
|
46
|
+
if (testArgs.includes("--passWithNoTests")) {
|
|
47
|
+
testArgs.splice(testArgs.indexOf("--passWithNoTests"), 1);
|
|
48
|
+
}
|
|
49
|
+
testCmd.push(...testArgs);
|
|
50
|
+
}
|
|
51
|
+
const expectedScripts = {
|
|
52
|
+
...hasStart && {
|
|
53
|
+
start: `backstage-cli package ${startCmd.join(" ")}`
|
|
54
|
+
},
|
|
55
|
+
build: `backstage-cli package ${buildCmd.join(" ")}`,
|
|
56
|
+
lint: "backstage-cli package lint",
|
|
57
|
+
test: `backstage-cli package ${testCmd.join(" ")}`,
|
|
58
|
+
clean: "backstage-cli package clean",
|
|
59
|
+
...needsPack && {
|
|
60
|
+
postpack: "backstage-cli package postpack",
|
|
61
|
+
prepack: "backstage-cli package prepack"
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
let changed = false;
|
|
65
|
+
const currentScripts = packageJson.scripts = packageJson.scripts || {};
|
|
66
|
+
for (const [name, value] of Object.entries(expectedScripts)) {
|
|
67
|
+
const currentScript = currentScripts[name];
|
|
68
|
+
const isMissing = !currentScript;
|
|
69
|
+
const isDifferent = currentScript !== value;
|
|
70
|
+
const isBackstageScript = currentScript?.includes("backstage-cli");
|
|
71
|
+
if (isMissing || isDifferent && isBackstageScript) {
|
|
72
|
+
changed = true;
|
|
73
|
+
currentScripts[name] = value;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (changed) {
|
|
77
|
+
console.log(`Updating scripts for ${packageJson.name}`);
|
|
78
|
+
await fs__default.default.writeJson(node_path.resolve(dir, "package.json"), packageJson, {
|
|
79
|
+
spaces: 2
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
})
|
|
83
|
+
);
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
exports.default = packageScripts;
|
|
87
|
+
//# sourceMappingURL=packageScripts.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packageScripts.cjs.js","sources":["../../src/commands/packageScripts.ts"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { cli } from 'cleye';\nimport fs from 'fs-extra';\nimport { resolve as resolvePath } from 'node:path';\nimport { PackageGraph, PackageRoles, PackageRole } from '@backstage/cli-node';\nimport type { CliCommandContext } from '@backstage/cli-node';\n\nconst configArgPattern = /--config[=\\s][^\\s$]+/;\n\nconst noStartRoles: PackageRole[] = ['cli', 'cli-module', 'common-library'];\n\nexport default async ({ args, info }: CliCommandContext) => {\n cli({ help: info, booleanFlagNegation: true }, undefined, args);\n const packages = await PackageGraph.listTargetPackages();\n\n await Promise.all(\n packages.map(async ({ dir, packageJson }) => {\n const role = PackageRoles.getRoleFromPackage(packageJson);\n if (!role) {\n return;\n }\n\n const roleInfo = PackageRoles.getRoleInfo(role);\n const hasStart = !noStartRoles.includes(role);\n const needsPack = !(roleInfo.output.includes('bundle') || role === 'cli');\n const scripts = packageJson.scripts ?? {};\n\n const startCmd = ['start'];\n if (scripts.start?.includes('--check')) {\n startCmd.push('--check');\n }\n if (scripts.start?.includes('--config')) {\n startCmd.push(...(scripts.start.match(configArgPattern) ?? []));\n }\n\n const buildCmd = ['build'];\n if (scripts.build?.includes('--minify')) {\n buildCmd.push('--minify');\n }\n if (scripts.build?.includes('--config')) {\n buildCmd.push(...(scripts.build.match(configArgPattern) ?? []));\n }\n\n // For test scripts we keep all existing flags except for --passWithNoTests, since that's now default\n const testCmd = ['test'];\n if (scripts.test?.startsWith('backstage-cli test')) {\n const testArgs = scripts.test\n .slice('backstage-cli test'.length)\n .split(' ')\n .filter(Boolean);\n if (testArgs.includes('--passWithNoTests')) {\n testArgs.splice(testArgs.indexOf('--passWithNoTests'), 1);\n }\n testCmd.push(...testArgs);\n }\n\n const expectedScripts = {\n ...(hasStart && {\n start: `backstage-cli package ${startCmd.join(' ')}`,\n }),\n build: `backstage-cli package ${buildCmd.join(' ')}`,\n lint: 'backstage-cli package lint',\n test: `backstage-cli package ${testCmd.join(' ')}`,\n clean: 'backstage-cli package clean',\n ...(needsPack && {\n postpack: 'backstage-cli package postpack',\n prepack: 'backstage-cli package prepack',\n }),\n };\n\n let changed = false;\n const currentScripts: Record<string, string | undefined> =\n (packageJson.scripts = packageJson.scripts || {});\n\n for (const [name, value] of Object.entries(expectedScripts)) {\n const currentScript = currentScripts[name];\n\n const isMissing = !currentScript;\n const isDifferent = currentScript !== value;\n const isBackstageScript = currentScript?.includes('backstage-cli');\n if (isMissing || (isDifferent && isBackstageScript)) {\n changed = true;\n currentScripts[name] = value;\n }\n }\n\n if (changed) {\n console.log(`Updating scripts for ${packageJson.name}`);\n await fs.writeJson(resolvePath(dir, 'package.json'), packageJson, {\n spaces: 2,\n });\n }\n }),\n );\n};\n"],"names":["cli","PackageGraph","PackageRoles","fs","resolvePath"],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var cleye = require('cleye');
|
|
6
|
+
var fs = require('fs-extra');
|
|
7
|
+
var node_path = require('node:path');
|
|
8
|
+
var cliNode = require('@backstage/cli-node');
|
|
9
|
+
|
|
10
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
11
|
+
|
|
12
|
+
var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
|
|
13
|
+
|
|
14
|
+
const REACT_ROUTER_DEPS = ["react-router", "react-router-dom"];
|
|
15
|
+
const REACT_ROUTER_RANGE = "6.0.0-beta.0 || ^6.3.0";
|
|
16
|
+
var reactRouterDeps = async ({ args, info }) => {
|
|
17
|
+
cleye.cli({ help: info, booleanFlagNegation: true }, void 0, args);
|
|
18
|
+
const packages = await cliNode.PackageGraph.listTargetPackages();
|
|
19
|
+
await Promise.all(
|
|
20
|
+
packages.map(async ({ dir, packageJson }) => {
|
|
21
|
+
const role = cliNode.PackageRoles.getRoleFromPackage(packageJson);
|
|
22
|
+
if (role === "frontend") {
|
|
23
|
+
console.log(`Skipping ${packageJson.name}`);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
let changed = false;
|
|
27
|
+
for (const depName of ["dependencies", "devDependencies"]) {
|
|
28
|
+
const depsCollection = packageJson[depName];
|
|
29
|
+
if (depsCollection) {
|
|
30
|
+
for (const key of Object.keys(depsCollection)) {
|
|
31
|
+
if (REACT_ROUTER_DEPS.includes(key)) {
|
|
32
|
+
delete depsCollection[key];
|
|
33
|
+
const peerDeps = packageJson.peerDependencies = packageJson.peerDependencies ?? {};
|
|
34
|
+
peerDeps[key] = REACT_ROUTER_RANGE;
|
|
35
|
+
changed = true;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (changed) {
|
|
41
|
+
console.log(`Updating dependencies for ${packageJson.name}`);
|
|
42
|
+
await fs__default.default.writeJson(node_path.resolve(dir, "package.json"), packageJson, {
|
|
43
|
+
spaces: 2
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
})
|
|
47
|
+
);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
exports.default = reactRouterDeps;
|
|
51
|
+
//# sourceMappingURL=reactRouterDeps.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactRouterDeps.cjs.js","sources":["../../src/commands/reactRouterDeps.ts"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { cli } from 'cleye';\nimport fs from 'fs-extra';\nimport { resolve as resolvePath } from 'node:path';\nimport { PackageGraph, PackageRoles } from '@backstage/cli-node';\nimport type { CliCommandContext } from '@backstage/cli-node';\n\nconst REACT_ROUTER_DEPS = ['react-router', 'react-router-dom'];\nconst REACT_ROUTER_RANGE = '6.0.0-beta.0 || ^6.3.0';\n\nexport default async ({ args, info }: CliCommandContext) => {\n cli({ help: info, booleanFlagNegation: true }, undefined, args);\n const packages = await PackageGraph.listTargetPackages();\n\n await Promise.all(\n packages.map(async ({ dir, packageJson }) => {\n const role = PackageRoles.getRoleFromPackage(packageJson);\n if (role === 'frontend') {\n console.log(`Skipping ${packageJson.name}`);\n return;\n }\n\n let changed = false;\n for (const depName of ['dependencies', 'devDependencies'] as const) {\n const depsCollection = packageJson[depName];\n if (depsCollection) {\n for (const key of Object.keys(depsCollection)) {\n if (REACT_ROUTER_DEPS.includes(key)) {\n delete depsCollection[key];\n const peerDeps = (packageJson.peerDependencies =\n packageJson.peerDependencies ?? {});\n peerDeps[key] = REACT_ROUTER_RANGE;\n changed = true;\n }\n }\n }\n }\n\n if (changed) {\n console.log(`Updating dependencies for ${packageJson.name}`);\n await fs.writeJson(resolvePath(dir, 'package.json'), packageJson, {\n spaces: 2,\n });\n }\n }),\n );\n};\n"],"names":["cli","PackageGraph","PackageRoles","fs","resolvePath"],"mappings":";;;;;;;;;;;;;AAsBA,MAAM,iBAAA,GAAoB,CAAC,cAAA,EAAgB,kBAAkB,CAAA;AAC7D,MAAM,kBAAA,GAAqB,wBAAA;AAE3B,sBAAe,OAAO,EAAE,IAAA,EAAM,IAAA,EAAK,KAAyB;AAC1D,EAAAA,SAAA,CAAI,EAAE,IAAA,EAAM,IAAA,EAAM,qBAAqB,IAAA,EAAK,EAAG,QAAW,IAAI,CAAA;AAC9D,EAAA,MAAM,QAAA,GAAW,MAAMC,oBAAA,CAAa,kBAAA,EAAmB;AAEvD,EAAA,MAAM,OAAA,CAAQ,GAAA;AAAA,IACZ,SAAS,GAAA,CAAI,OAAO,EAAE,GAAA,EAAK,aAAY,KAAM;AAC3C,MAAA,MAAM,IAAA,GAAOC,oBAAA,CAAa,kBAAA,CAAmB,WAAW,CAAA;AACxD,MAAA,IAAI,SAAS,UAAA,EAAY;AACvB,QAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,SAAA,EAAY,WAAA,CAAY,IAAI,CAAA,CAAE,CAAA;AAC1C,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,OAAA,GAAU,KAAA;AACd,MAAA,KAAA,MAAW,OAAA,IAAW,CAAC,cAAA,EAAgB,iBAAiB,CAAA,EAAY;AAClE,QAAA,MAAM,cAAA,GAAiB,YAAY,OAAO,CAAA;AAC1C,QAAA,IAAI,cAAA,EAAgB;AAClB,UAAA,KAAA,MAAW,GAAA,IAAO,MAAA,CAAO,IAAA,CAAK,cAAc,CAAA,EAAG;AAC7C,YAAA,IAAI,iBAAA,CAAkB,QAAA,CAAS,GAAG,CAAA,EAAG;AACnC,cAAA,OAAO,eAAe,GAAG,CAAA;AACzB,cAAA,MAAM,QAAA,GAAY,WAAA,CAAY,gBAAA,GAC5B,WAAA,CAAY,oBAAoB,EAAC;AACnC,cAAA,QAAA,CAAS,GAAG,CAAA,GAAI,kBAAA;AAChB,cAAA,OAAA,GAAU,IAAA;AAAA,YACZ;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,0BAAA,EAA6B,WAAA,CAAY,IAAI,CAAA,CAAE,CAAA;AAC3D,QAAA,MAAMC,oBAAG,SAAA,CAAUC,iBAAA,CAAY,GAAA,EAAK,cAAc,GAAG,WAAA,EAAa;AAAA,UAChE,MAAA,EAAQ;AAAA,SACT,CAAA;AAAA,MACH;AAAA,IACF,CAAC;AAAA,GACH;AACF,CAAA;;;;"}
|