@backstage/cli 0.0.0-nightly-2021103021730 → 0.0.0-nightly-202111422550
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 +18 -2
- package/dist/cjs/{Lockfile-80f0eec4.cjs.js → Lockfile-35661afa.cjs.js} +18 -18
- package/dist/cjs/{build-9f3bb123.cjs.js → build-260d2d44.cjs.js} +8 -7
- package/dist/cjs/{build-8d6fc214.cjs.js → build-3339df44.cjs.js} +8 -7
- package/dist/cjs/{build-1e6c48b0.cjs.js → build-7c19fd36.cjs.js} +9 -9
- package/dist/cjs/{build-2c34ad9e.cjs.js → build-aa8594a1.cjs.js} +23 -20
- package/dist/cjs/{buildWorkspace-172f0f28.cjs.js → buildWorkspace-bd71f4f8.cjs.js} +6 -6
- package/dist/cjs/{bump-be9c5a12.cjs.js → bump-47534b09.cjs.js} +36 -36
- package/dist/cjs/{bundle-b633093f.cjs.js → bundle-14e07ead.cjs.js} +15 -15
- package/dist/cjs/{clean-9c626c55.cjs.js → clean-282521b8.cjs.js} +6 -6
- package/dist/cjs/{config-e3fa1953.cjs.js → config-c4212ad4.cjs.js} +7 -7
- package/dist/cjs/{create-40000c2d.cjs.js → create-629193c5.cjs.js} +41 -41
- package/dist/cjs/{createPlugin-ead47a0e.cjs.js → createPlugin-756c48b5.cjs.js} +31 -31
- package/dist/cjs/{dev-c73698bc.cjs.js → dev-beba26fd.cjs.js} +8 -8
- package/dist/cjs/{diff-4b86e231.cjs.js → diff-2d5b026c.cjs.js} +29 -29
- package/dist/cjs/{docs-046fcfe0.cjs.js → docs-f42ce084.cjs.js} +6 -6
- package/dist/cjs/{index-d131285e.cjs.js → index-406e364f.cjs.js} +15 -15
- package/dist/cjs/{index-38393bc5.cjs.js → index-8977a33d.cjs.js} +14 -14
- package/dist/cjs/{index-2d6fe27f.cjs.js → index-a2419466.cjs.js} +60 -61
- package/dist/cjs/{info-4087550f.cjs.js → info-d0d35bb2.cjs.js} +6 -6
- package/dist/cjs/{install-5f8a246e.cjs.js → install-f7db6355.cjs.js} +23 -23
- package/dist/cjs/{lint-6fe790fc.cjs.js → lint-5dc7638f.cjs.js} +4 -4
- package/dist/cjs/{lint-de50a32d.cjs.js → lint-7f529079.cjs.js} +7 -7
- package/dist/cjs/{pack-5afbb223.cjs.js → pack-bd87bc11.cjs.js} +6 -6
- package/dist/cjs/{packager-226b3ec8.cjs.js → packager-9551d9e0.cjs.js} +37 -35
- package/dist/cjs/{packages-93633139.cjs.js → packages-209c7334.cjs.js} +5 -5
- package/dist/cjs/{paths-2351a9f6.cjs.js → paths-2bc1bd1d.cjs.js} +35 -35
- package/dist/cjs/{print-89e80ae6.cjs.js → print-fa8d75d6.cjs.js} +5 -5
- package/dist/cjs/{removePlugin-8ca53dfb.cjs.js → removePlugin-81121573.cjs.js} +30 -29
- package/dist/cjs/{run-ae641d17.cjs.js → run-16b1d94a.cjs.js} +5 -5
- package/dist/cjs/{schema-30734b86.cjs.js → schema-6a0a3ebe.cjs.js} +5 -5
- package/dist/cjs/{serve-9543745f.cjs.js → serve-76c00365.cjs.js} +9 -9
- package/dist/cjs/{serve-61a54abd.cjs.js → serve-8dbaff94.cjs.js} +15 -15
- package/dist/cjs/{server-cf78bf65.cjs.js → server-7ec696f8.cjs.js} +6 -6
- package/dist/cjs/{svgrTemplate-2d0d15cf.cjs.js → svgrTemplate-f19e974c.cjs.js} +3 -3
- package/dist/cjs/{tasks-ed890d54.cjs.js → tasks-7e7c8493.cjs.js} +29 -29
- package/dist/cjs/{testCommand-ffe13876.cjs.js → testCommand-d50fbf63.cjs.js} +4 -4
- package/dist/cjs/{validate-6ae99866.cjs.js → validate-f5c5dc39.cjs.js} +4 -4
- package/dist/index.cjs.js +1 -1
- package/package.json +14 -14
- package/dist/cjs/buildImage-c5059670.cjs.js +0 -77
|
@@ -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-a2419466.cjs.js');
|
|
5
5
|
require('commander');
|
|
6
6
|
require('chalk');
|
|
7
7
|
require('semver');
|
|
@@ -14,10 +14,10 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
14
14
|
var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
|
|
15
15
|
|
|
16
16
|
async function clean() {
|
|
17
|
-
await fs__default[
|
|
18
|
-
await fs__default[
|
|
19
|
-
await fs__default[
|
|
17
|
+
await fs__default["default"].remove(index.paths.resolveTarget("dist"));
|
|
18
|
+
await fs__default["default"].remove(index.paths.resolveTarget("dist-types"));
|
|
19
|
+
await fs__default["default"].remove(index.paths.resolveTarget("coverage"));
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
exports
|
|
23
|
-
//# sourceMappingURL=clean-
|
|
22
|
+
exports["default"] = clean;
|
|
23
|
+
//# sourceMappingURL=clean-282521b8.cjs.js.map
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var configLoader = require('@backstage/config-loader');
|
|
4
4
|
var config = require('@backstage/config');
|
|
5
|
-
var index = require('./index-
|
|
5
|
+
var index = require('./index-a2419466.cjs.js');
|
|
6
6
|
|
|
7
7
|
function isValidUrl(url) {
|
|
8
8
|
try {
|
|
@@ -17,10 +17,10 @@ async function loadCliConfig(options) {
|
|
|
17
17
|
const configTargets = [];
|
|
18
18
|
options.args.forEach((arg) => {
|
|
19
19
|
if (!isValidUrl(arg)) {
|
|
20
|
-
configTargets.push({path: index.paths.resolveTarget(arg)});
|
|
20
|
+
configTargets.push({ path: index.paths.resolveTarget(arg) });
|
|
21
21
|
}
|
|
22
22
|
});
|
|
23
|
-
const {Project} = require("@lerna/project");
|
|
23
|
+
const { Project } = require("@lerna/project");
|
|
24
24
|
const project = new Project(index.paths.targetDir);
|
|
25
25
|
const packages = await project.getPackages();
|
|
26
26
|
const localPackageNames = options.fromPackage ? findPackages(packages, options.fromPackage) : packages.map((p) => p.name);
|
|
@@ -28,7 +28,7 @@ async function loadCliConfig(options) {
|
|
|
28
28
|
dependencies: localPackageNames,
|
|
29
29
|
packagePaths: [index.paths.resolveTargetRoot("package.json")]
|
|
30
30
|
});
|
|
31
|
-
const {appConfigs} = await configLoader.loadConfig({
|
|
31
|
+
const { appConfigs } = await configLoader.loadConfig({
|
|
32
32
|
experimentalEnvFunc: options.mockEnv ? async (name) => process.env[name] || "x" : void 0,
|
|
33
33
|
configRoot: index.paths.targetRoot,
|
|
34
34
|
configPaths: [],
|
|
@@ -60,9 +60,9 @@ async function loadCliConfig(options) {
|
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
function findPackages(packages, fromPackage) {
|
|
63
|
-
const {PackageGraph} = require("@lerna/package-graph");
|
|
63
|
+
const { PackageGraph } = require("@lerna/package-graph");
|
|
64
64
|
const graph = new PackageGraph(packages);
|
|
65
|
-
const targets = new Set();
|
|
65
|
+
const targets = /* @__PURE__ */ new Set();
|
|
66
66
|
const searchNames = [fromPackage];
|
|
67
67
|
while (searchNames.length) {
|
|
68
68
|
const name = searchNames.pop();
|
|
@@ -82,4 +82,4 @@ function findPackages(packages, fromPackage) {
|
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
exports.loadCliConfig = loadCliConfig;
|
|
85
|
-
//# sourceMappingURL=config-
|
|
85
|
+
//# sourceMappingURL=config-c4212ad4.cjs.js.map
|
|
@@ -7,10 +7,10 @@ var chalk = require('chalk');
|
|
|
7
7
|
var inquirer = require('inquirer');
|
|
8
8
|
var camelCase = require('lodash/camelCase');
|
|
9
9
|
var upperFirst = require('lodash/upperFirst');
|
|
10
|
-
var index = require('./index-
|
|
11
|
-
var tasks = require('./tasks-
|
|
12
|
-
var Lockfile = require('./Lockfile-
|
|
13
|
-
require('./run-
|
|
10
|
+
var index = require('./index-a2419466.cjs.js');
|
|
11
|
+
var tasks = require('./tasks-7e7c8493.cjs.js');
|
|
12
|
+
var Lockfile = require('./Lockfile-35661afa.cjs.js');
|
|
13
|
+
require('./run-16b1d94a.cjs.js');
|
|
14
14
|
var partition = require('lodash/partition');
|
|
15
15
|
var errors = require('@backstage/errors');
|
|
16
16
|
require('commander');
|
|
@@ -73,7 +73,7 @@ function ownerPrompt() {
|
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
async function executePluginPackageTemplate(ctx, options) {
|
|
76
|
-
const {targetDir} = options;
|
|
76
|
+
const { targetDir } = options;
|
|
77
77
|
let lockfile;
|
|
78
78
|
try {
|
|
79
79
|
lockfile = await Lockfile.Lockfile.load(index.paths.resolveTargetRoot("yarn.lock"));
|
|
@@ -82,8 +82,8 @@ async function executePluginPackageTemplate(ctx, options) {
|
|
|
82
82
|
tasks.Task.section("Checking Prerequisites");
|
|
83
83
|
const shortPluginDir = path.relative(index.paths.targetRoot, targetDir);
|
|
84
84
|
await tasks.Task.forItem("availability", shortPluginDir, async () => {
|
|
85
|
-
if (await fs__default[
|
|
86
|
-
throw new Error(`A package with the same plugin ID already exists at ${chalk__default[
|
|
85
|
+
if (await fs__default["default"].pathExists(targetDir)) {
|
|
86
|
+
throw new Error(`A package with the same plugin ID already exists at ${chalk__default["default"].cyan(shortPluginDir)}. Please try again with a different ID.`);
|
|
87
87
|
}
|
|
88
88
|
});
|
|
89
89
|
const tempDir = await tasks.Task.forItem("creating", "temp dir", async () => {
|
|
@@ -92,13 +92,13 @@ async function executePluginPackageTemplate(ctx, options) {
|
|
|
92
92
|
tasks.Task.section("Executing Template");
|
|
93
93
|
await tasks.templatingTask(index.paths.resolveOwn("templates", options.templateName), tempDir, options.values, index.createPackageVersionProvider(lockfile));
|
|
94
94
|
const pkgJsonPath = path.resolve(tempDir, "package.json");
|
|
95
|
-
if (await fs__default[
|
|
96
|
-
const pkgJson = await fs__default[
|
|
97
|
-
await fs__default[
|
|
95
|
+
if (await fs__default["default"].pathExists(pkgJsonPath)) {
|
|
96
|
+
const pkgJson = await fs__default["default"].readJson(pkgJsonPath);
|
|
97
|
+
await fs__default["default"].writeJson(pkgJsonPath, pkgJson, { spaces: 2 });
|
|
98
98
|
}
|
|
99
99
|
tasks.Task.section("Installing");
|
|
100
100
|
await tasks.Task.forItem("moving", shortPluginDir, async () => {
|
|
101
|
-
await fs__default[
|
|
101
|
+
await fs__default["default"].move(tempDir, targetDir).catch((error) => {
|
|
102
102
|
throw new Error(`Failed to move package from ${tempDir} to ${targetDir}, ${error.message}`);
|
|
103
103
|
});
|
|
104
104
|
});
|
|
@@ -113,11 +113,11 @@ const frontendPlugin = createFactory({
|
|
|
113
113
|
}),
|
|
114
114
|
optionsPrompts: [pluginIdPrompt(), ownerPrompt()],
|
|
115
115
|
async create(options, ctx) {
|
|
116
|
-
const {id} = options;
|
|
116
|
+
const { id } = options;
|
|
117
117
|
const name = ctx.scope ? `@${ctx.scope}/plugin-${id}` : `backstage-plugin-${id}`;
|
|
118
|
-
const extensionName = `${upperFirst__default[
|
|
118
|
+
const extensionName = `${upperFirst__default["default"](camelCase__default["default"](id))}Page`;
|
|
119
119
|
tasks.Task.log();
|
|
120
|
-
tasks.Task.log(`Creating backend plugin ${chalk__default[
|
|
120
|
+
tasks.Task.log(`Creating backend plugin ${chalk__default["default"].cyan(name)}`);
|
|
121
121
|
const targetDir = ctx.isMonoRepo ? index.paths.resolveTargetRoot("plugins", id) : index.paths.resolveTargetRoot(`backstage-plugin-${id}`);
|
|
122
122
|
await executePluginPackageTemplate(ctx, {
|
|
123
123
|
targetDir,
|
|
@@ -126,13 +126,13 @@ const frontendPlugin = createFactory({
|
|
|
126
126
|
id,
|
|
127
127
|
name,
|
|
128
128
|
extensionName,
|
|
129
|
-
pluginVar: `${camelCase__default[
|
|
129
|
+
pluginVar: `${camelCase__default["default"](id)}Plugin`,
|
|
130
130
|
pluginVersion: ctx.defaultVersion,
|
|
131
131
|
privatePackage: ctx.private,
|
|
132
132
|
npmRegistry: ctx.npmRegistry
|
|
133
133
|
}
|
|
134
134
|
});
|
|
135
|
-
if (await fs__default[
|
|
135
|
+
if (await fs__default["default"].pathExists(index.paths.resolveTargetRoot("packages/app"))) {
|
|
136
136
|
await tasks.Task.forItem("app", "adding dependency", async () => {
|
|
137
137
|
await tasks.addPackageDependency(index.paths.resolveTargetRoot("packages/app/package.json"), {
|
|
138
138
|
dependencies: {
|
|
@@ -143,10 +143,10 @@ const frontendPlugin = createFactory({
|
|
|
143
143
|
await tasks.Task.forItem("app", "adding import", async () => {
|
|
144
144
|
var _a;
|
|
145
145
|
const pluginsFilePath = index.paths.resolveTargetRoot("packages/app/src/App.tsx");
|
|
146
|
-
if (!await fs__default[
|
|
146
|
+
if (!await fs__default["default"].pathExists(pluginsFilePath)) {
|
|
147
147
|
return;
|
|
148
148
|
}
|
|
149
|
-
const content = await fs__default[
|
|
149
|
+
const content = await fs__default["default"].readFile(pluginsFilePath, "utf8");
|
|
150
150
|
const revLines = content.split("\n").reverse();
|
|
151
151
|
const lastImportIndex = revLines.findIndex((line) => line.match(/ from ("|').*("|')/));
|
|
152
152
|
const lastRouteIndex = revLines.findIndex((line) => line.match(/<\/FlatRoutes/));
|
|
@@ -161,14 +161,14 @@ const frontendPlugin = createFactory({
|
|
|
161
161
|
revLines.splice(lastRouteIndex + 1, 0, indentation + componentLine);
|
|
162
162
|
}
|
|
163
163
|
const newContent = revLines.reverse().join("\n");
|
|
164
|
-
await fs__default[
|
|
164
|
+
await fs__default["default"].writeFile(pluginsFilePath, newContent, "utf8");
|
|
165
165
|
}
|
|
166
166
|
});
|
|
167
167
|
}
|
|
168
168
|
if (options.owner) {
|
|
169
169
|
await tasks.addCodeownersEntry(`/plugins/${id}`, options.owner);
|
|
170
170
|
}
|
|
171
|
-
await tasks.Task.forCommand("yarn install", {cwd: targetDir, optional: true});
|
|
171
|
+
await tasks.Task.forCommand("yarn install", { cwd: targetDir, optional: true });
|
|
172
172
|
await tasks.Task.forCommand("yarn lint --fix", {
|
|
173
173
|
cwd: targetDir,
|
|
174
174
|
optional: true
|
|
@@ -187,7 +187,7 @@ const backendPlugin = createFactory({
|
|
|
187
187
|
const id = `${options.id}-backend`;
|
|
188
188
|
const name = ctx.scope ? `@${ctx.scope}/plugin-${id}` : `backstage-plugin-${id}`;
|
|
189
189
|
tasks.Task.log();
|
|
190
|
-
tasks.Task.log(`Creating backend plugin ${chalk__default[
|
|
190
|
+
tasks.Task.log(`Creating backend plugin ${chalk__default["default"].cyan(name)}`);
|
|
191
191
|
const targetDir = ctx.isMonoRepo ? index.paths.resolveTargetRoot("plugins", id) : index.paths.resolveTargetRoot(`backstage-plugin-${id}`);
|
|
192
192
|
await executePluginPackageTemplate(ctx, {
|
|
193
193
|
targetDir,
|
|
@@ -195,13 +195,13 @@ const backendPlugin = createFactory({
|
|
|
195
195
|
values: {
|
|
196
196
|
id,
|
|
197
197
|
name,
|
|
198
|
-
pluginVar: `${camelCase__default[
|
|
198
|
+
pluginVar: `${camelCase__default["default"](id)}Plugin`,
|
|
199
199
|
pluginVersion: ctx.defaultVersion,
|
|
200
200
|
privatePackage: ctx.private,
|
|
201
201
|
npmRegistry: ctx.npmRegistry
|
|
202
202
|
}
|
|
203
203
|
});
|
|
204
|
-
if (await fs__default[
|
|
204
|
+
if (await fs__default["default"].pathExists(index.paths.resolveTargetRoot("packages/backend"))) {
|
|
205
205
|
await tasks.Task.forItem("backend", "adding dependency", async () => {
|
|
206
206
|
await tasks.addPackageDependency(index.paths.resolveTargetRoot("packages/backend/package.json"), {
|
|
207
207
|
dependencies: {
|
|
@@ -213,7 +213,7 @@ const backendPlugin = createFactory({
|
|
|
213
213
|
if (options.owner) {
|
|
214
214
|
await tasks.addCodeownersEntry(`/plugins/${id}`, options.owner);
|
|
215
215
|
}
|
|
216
|
-
await tasks.Task.forCommand("yarn install", {cwd: targetDir, optional: true});
|
|
216
|
+
await tasks.Task.forCommand("yarn install", { cwd: targetDir, optional: true });
|
|
217
217
|
await tasks.Task.forCommand("yarn lint --fix", {
|
|
218
218
|
cwd: targetDir,
|
|
219
219
|
optional: true
|
|
@@ -229,11 +229,11 @@ const pluginCommon = createFactory({
|
|
|
229
229
|
}),
|
|
230
230
|
optionsPrompts: [pluginIdPrompt(), ownerPrompt()],
|
|
231
231
|
async create(options, ctx) {
|
|
232
|
-
const {id} = options;
|
|
232
|
+
const { id } = options;
|
|
233
233
|
const suffix = `${id}-common`;
|
|
234
234
|
const name = ctx.scope ? `@${ctx.scope}/plugin-${suffix}` : `backstage-plugin-${suffix}`;
|
|
235
235
|
tasks.Task.log();
|
|
236
|
-
tasks.Task.log(`Creating backend plugin ${chalk__default[
|
|
236
|
+
tasks.Task.log(`Creating backend plugin ${chalk__default["default"].cyan(name)}`);
|
|
237
237
|
const targetDir = ctx.isMonoRepo ? index.paths.resolveTargetRoot("plugins", suffix) : index.paths.resolveTargetRoot(`backstage-plugin-${suffix}`);
|
|
238
238
|
await executePluginPackageTemplate(ctx, {
|
|
239
239
|
targetDir,
|
|
@@ -249,7 +249,7 @@ const pluginCommon = createFactory({
|
|
|
249
249
|
if (options.owner) {
|
|
250
250
|
await tasks.addCodeownersEntry(`/plugins/${suffix}`, options.owner);
|
|
251
251
|
}
|
|
252
|
-
await tasks.Task.forCommand("yarn install", {cwd: targetDir, optional: true});
|
|
252
|
+
await tasks.Task.forCommand("yarn install", { cwd: targetDir, optional: true });
|
|
253
253
|
await tasks.Task.forCommand("yarn lint --fix", {
|
|
254
254
|
cwd: targetDir,
|
|
255
255
|
optional: true
|
|
@@ -280,7 +280,7 @@ const scaffolderModule = createFactory({
|
|
|
280
280
|
ownerPrompt()
|
|
281
281
|
],
|
|
282
282
|
async create(options, ctx) {
|
|
283
|
-
const {id} = options;
|
|
283
|
+
const { id } = options;
|
|
284
284
|
const slug = `scaffolder-backend-module-${id}`;
|
|
285
285
|
let name = `backstage-plugin-${slug}`;
|
|
286
286
|
if (ctx.scope) {
|
|
@@ -291,7 +291,7 @@ const scaffolderModule = createFactory({
|
|
|
291
291
|
}
|
|
292
292
|
}
|
|
293
293
|
tasks.Task.log();
|
|
294
|
-
tasks.Task.log(`Creating module ${chalk__default[
|
|
294
|
+
tasks.Task.log(`Creating module ${chalk__default["default"].cyan(name)}`);
|
|
295
295
|
const targetDir = ctx.isMonoRepo ? index.paths.resolveTargetRoot("plugins", slug) : index.paths.resolveTargetRoot(`backstage-plugin-${slug}`);
|
|
296
296
|
await executePluginPackageTemplate(ctx, {
|
|
297
297
|
targetDir,
|
|
@@ -307,7 +307,7 @@ const scaffolderModule = createFactory({
|
|
|
307
307
|
if (options.owner) {
|
|
308
308
|
await tasks.addCodeownersEntry(`/plugins/${slug}`, options.owner);
|
|
309
309
|
}
|
|
310
|
-
await tasks.Task.forCommand("yarn install", {cwd: targetDir, optional: true});
|
|
310
|
+
await tasks.Task.forCommand("yarn install", { cwd: targetDir, optional: true });
|
|
311
311
|
await tasks.Task.forCommand("yarn lint --fix", {
|
|
312
312
|
cwd: targetDir,
|
|
313
313
|
optional: true
|
|
@@ -345,7 +345,7 @@ class FactoryRegistry {
|
|
|
345
345
|
static async interactiveSelect(preselected) {
|
|
346
346
|
let selected = preselected;
|
|
347
347
|
if (!selected) {
|
|
348
|
-
const answers = await inquirer__default[
|
|
348
|
+
const answers = await inquirer__default["default"].prompt([
|
|
349
349
|
{
|
|
350
350
|
type: "list",
|
|
351
351
|
name: "name",
|
|
@@ -374,7 +374,7 @@ class FactoryRegistry {
|
|
|
374
374
|
};
|
|
375
375
|
}
|
|
376
376
|
if (factory.optionsPrompts) {
|
|
377
|
-
const [hasAnswers, needsAnswers] = partition__default[
|
|
377
|
+
const [hasAnswers, needsAnswers] = partition__default["default"](factory.optionsPrompts, (option) => option.name in currentOptions);
|
|
378
378
|
for (const option of hasAnswers) {
|
|
379
379
|
const value = provided[option.name];
|
|
380
380
|
if (option.validate) {
|
|
@@ -384,9 +384,9 @@ class FactoryRegistry {
|
|
|
384
384
|
}
|
|
385
385
|
}
|
|
386
386
|
}
|
|
387
|
-
currentOptions = await inquirer__default[
|
|
388
|
-
message: chalk__default[
|
|
389
|
-
error: chalk__default[
|
|
387
|
+
currentOptions = await inquirer__default["default"].prompt(needsAnswers.map((option) => applyPromptMessageTransforms(option, {
|
|
388
|
+
message: chalk__default["default"].blue,
|
|
389
|
+
error: chalk__default["default"].red
|
|
390
390
|
})), currentOptions);
|
|
391
391
|
}
|
|
392
392
|
return currentOptions;
|
|
@@ -414,7 +414,7 @@ var create = async (cmd) => {
|
|
|
414
414
|
const options = await FactoryRegistry.populateOptions(factory, providedOptions);
|
|
415
415
|
let isMonoRepo = false;
|
|
416
416
|
try {
|
|
417
|
-
const rootPackageJson = await fs__default[
|
|
417
|
+
const rootPackageJson = await fs__default["default"].readJson(index.paths.resolveTargetRoot("package.json"));
|
|
418
418
|
if (rootPackageJson.workspaces) {
|
|
419
419
|
isMonoRepo = true;
|
|
420
420
|
}
|
|
@@ -426,7 +426,7 @@ var create = async (cmd) => {
|
|
|
426
426
|
}
|
|
427
427
|
let defaultVersion = "0.1.0";
|
|
428
428
|
try {
|
|
429
|
-
const rootLernaJson = await fs__default[
|
|
429
|
+
const rootLernaJson = await fs__default["default"].readJson(index.paths.resolveTargetRoot("lerna.json"));
|
|
430
430
|
if (rootLernaJson.version) {
|
|
431
431
|
defaultVersion = rootLernaJson.version;
|
|
432
432
|
}
|
|
@@ -438,7 +438,7 @@ var create = async (cmd) => {
|
|
|
438
438
|
}
|
|
439
439
|
const tempDirs = new Array();
|
|
440
440
|
async function createTemporaryDirectory(name) {
|
|
441
|
-
const dir = await fs__default[
|
|
441
|
+
const dir = await fs__default["default"].mkdtemp(path.join(os__default["default"].tmpdir(), name));
|
|
442
442
|
tempDirs.push(dir);
|
|
443
443
|
return dir;
|
|
444
444
|
}
|
|
@@ -471,7 +471,7 @@ var create = async (cmd) => {
|
|
|
471
471
|
} finally {
|
|
472
472
|
for (const dir of tempDirs) {
|
|
473
473
|
try {
|
|
474
|
-
await fs__default[
|
|
474
|
+
await fs__default["default"].remove(dir);
|
|
475
475
|
} catch (error) {
|
|
476
476
|
console.error(`Failed to remove temporary directory '${dir}', ${error}`);
|
|
477
477
|
}
|
|
@@ -479,5 +479,5 @@ var create = async (cmd) => {
|
|
|
479
479
|
}
|
|
480
480
|
};
|
|
481
481
|
|
|
482
|
-
exports
|
|
483
|
-
//# sourceMappingURL=create-
|
|
482
|
+
exports["default"] = create;
|
|
483
|
+
//# sourceMappingURL=create-629193c5.cjs.js.map
|
|
@@ -10,10 +10,10 @@ var camelCase = require('lodash/camelCase');
|
|
|
10
10
|
var upperFirst = require('lodash/upperFirst');
|
|
11
11
|
var os = require('os');
|
|
12
12
|
var errors = require('@backstage/errors');
|
|
13
|
-
var tasks = require('./tasks-
|
|
14
|
-
var index = require('./index-
|
|
15
|
-
var Lockfile = require('./Lockfile-
|
|
16
|
-
require('./run-
|
|
13
|
+
var tasks = require('./tasks-7e7c8493.cjs.js');
|
|
14
|
+
var index = require('./index-a2419466.cjs.js');
|
|
15
|
+
var Lockfile = require('./Lockfile-35661afa.cjs.js');
|
|
16
|
+
require('./run-16b1d94a.cjs.js');
|
|
17
17
|
require('handlebars');
|
|
18
18
|
require('ora');
|
|
19
19
|
require('recursive-readdir');
|
|
@@ -35,8 +35,8 @@ var os__default = /*#__PURE__*/_interopDefaultLegacy(os);
|
|
|
35
35
|
const exec = util.promisify(child_process.exec);
|
|
36
36
|
async function checkExists(destination) {
|
|
37
37
|
await tasks.Task.forItem("checking", destination, async () => {
|
|
38
|
-
if (await fs__default[
|
|
39
|
-
const existing = chalk__default[
|
|
38
|
+
if (await fs__default["default"].pathExists(destination)) {
|
|
39
|
+
const existing = chalk__default["default"].cyan(destination.replace(`${index.paths.targetRoot}/`, ""));
|
|
40
40
|
throw new Error(`A plugin with the same name already exists: ${existing}
|
|
41
41
|
Please try again with a different plugin ID`);
|
|
42
42
|
}
|
|
@@ -50,14 +50,14 @@ const sortObjectByKeys = (obj) => {
|
|
|
50
50
|
};
|
|
51
51
|
const capitalize = (str) => str.charAt(0).toUpperCase() + str.slice(1);
|
|
52
52
|
const addExportStatement = async (file, exportStatement) => {
|
|
53
|
-
const newContents = fs__default[
|
|
54
|
-
await fs__default[
|
|
53
|
+
const newContents = fs__default["default"].readFileSync(file, "utf8").split("\n").filter(Boolean).concat([exportStatement]).concat([""]).join("\n");
|
|
54
|
+
await fs__default["default"].writeFile(file, newContents, "utf8");
|
|
55
55
|
};
|
|
56
56
|
async function addPluginDependencyToApp(rootDir, pluginPackage, versionStr) {
|
|
57
57
|
const packageFilePath = "packages/app/package.json";
|
|
58
58
|
const packageFile = path.resolve(rootDir, packageFilePath);
|
|
59
59
|
await tasks.Task.forItem("processing", packageFilePath, async () => {
|
|
60
|
-
const packageFileContent = await fs__default[
|
|
60
|
+
const packageFileContent = await fs__default["default"].readFile(packageFile, "utf-8");
|
|
61
61
|
const packageFileJson = JSON.parse(packageFileContent);
|
|
62
62
|
const dependencies = packageFileJson.dependencies;
|
|
63
63
|
if (dependencies[pluginPackage]) {
|
|
@@ -67,19 +67,19 @@ async function addPluginDependencyToApp(rootDir, pluginPackage, versionStr) {
|
|
|
67
67
|
packageFileJson.dependencies = sortObjectByKeys(dependencies);
|
|
68
68
|
const newContents = `${JSON.stringify(packageFileJson, null, 2)}
|
|
69
69
|
`;
|
|
70
|
-
await fs__default[
|
|
70
|
+
await fs__default["default"].writeFile(packageFile, newContents, "utf-8").catch((error) => {
|
|
71
71
|
throw new Error(`Failed to add plugin as dependency to app: ${packageFile}: ${error.message}`);
|
|
72
72
|
});
|
|
73
73
|
});
|
|
74
74
|
}
|
|
75
75
|
async function addPluginExtensionToApp(pluginId, extensionName, pluginPackage) {
|
|
76
76
|
const pluginsFilePath = index.paths.resolveTargetRoot("packages/app/src/App.tsx");
|
|
77
|
-
if (!await fs__default[
|
|
77
|
+
if (!await fs__default["default"].pathExists(pluginsFilePath)) {
|
|
78
78
|
return;
|
|
79
79
|
}
|
|
80
80
|
await tasks.Task.forItem("processing", pluginsFilePath, async () => {
|
|
81
81
|
var _a;
|
|
82
|
-
const content = await fs__default[
|
|
82
|
+
const content = await fs__default["default"].readFile(pluginsFilePath, "utf8");
|
|
83
83
|
const revLines = content.split("\n").reverse();
|
|
84
84
|
const lastImportIndex = revLines.findIndex((line) => line.match(/ from ("|').*("|')/));
|
|
85
85
|
const lastRouteIndex = revLines.findIndex((line) => line.match(/<\/FlatRoutes/));
|
|
@@ -88,13 +88,13 @@ async function addPluginExtensionToApp(pluginId, extensionName, pluginPackage) {
|
|
|
88
88
|
const [indentation] = (_a = revLines[lastRouteIndex + 1].match(/^\s*/)) != null ? _a : [];
|
|
89
89
|
revLines.splice(lastRouteIndex + 1, 0, `${indentation}<Route path="/${pluginId}" element={<${extensionName} />}/>`);
|
|
90
90
|
const newContent = revLines.reverse().join("\n");
|
|
91
|
-
await fs__default[
|
|
91
|
+
await fs__default["default"].writeFile(pluginsFilePath, newContent, "utf8");
|
|
92
92
|
}
|
|
93
93
|
});
|
|
94
94
|
}
|
|
95
95
|
async function cleanUp(tempDir) {
|
|
96
96
|
await tasks.Task.forItem("remove", "temporary directory", async () => {
|
|
97
|
-
await fs__default[
|
|
97
|
+
await fs__default["default"].remove(tempDir);
|
|
98
98
|
});
|
|
99
99
|
}
|
|
100
100
|
async function buildPlugin(pluginFolder) {
|
|
@@ -112,7 +112,7 @@ async function buildPlugin(pluginFolder) {
|
|
|
112
112
|
}).catch((error) => {
|
|
113
113
|
process.stdout.write(error.stderr);
|
|
114
114
|
process.stdout.write(error.stdout);
|
|
115
|
-
throw new Error(`Warning: Could not execute command ${chalk__default[
|
|
115
|
+
throw new Error(`Warning: Could not execute command ${chalk__default["default"].cyan(command)}`);
|
|
116
116
|
});
|
|
117
117
|
} catch (error) {
|
|
118
118
|
errors.assertError(error);
|
|
@@ -123,7 +123,7 @@ async function buildPlugin(pluginFolder) {
|
|
|
123
123
|
}
|
|
124
124
|
async function movePlugin(tempDir, destination, id) {
|
|
125
125
|
await tasks.Task.forItem("moving", id, async () => {
|
|
126
|
-
await fs__default[
|
|
126
|
+
await fs__default["default"].move(tempDir, destination).catch((error) => {
|
|
127
127
|
throw new Error(`Failed to move plugin from ${tempDir} to ${destination}: ${error.message}`);
|
|
128
128
|
});
|
|
129
129
|
});
|
|
@@ -134,12 +134,12 @@ var createPlugin = async (cmd) => {
|
|
|
134
134
|
{
|
|
135
135
|
type: "input",
|
|
136
136
|
name: "id",
|
|
137
|
-
message: chalk__default[
|
|
137
|
+
message: chalk__default["default"].blue("Enter an ID for the plugin [required]"),
|
|
138
138
|
validate: (value) => {
|
|
139
139
|
if (!value) {
|
|
140
|
-
return chalk__default[
|
|
140
|
+
return chalk__default["default"].red("Please enter an ID for the plugin");
|
|
141
141
|
} else if (!/^[a-z0-9]+(-[a-z0-9]+)*$/.test(value)) {
|
|
142
|
-
return chalk__default[
|
|
142
|
+
return chalk__default["default"].red("Plugin IDs must be lowercase and contain only letters, digits, and dashes.");
|
|
143
143
|
}
|
|
144
144
|
return true;
|
|
145
145
|
}
|
|
@@ -149,31 +149,31 @@ var createPlugin = async (cmd) => {
|
|
|
149
149
|
questions.push({
|
|
150
150
|
type: "input",
|
|
151
151
|
name: "owner",
|
|
152
|
-
message: chalk__default[
|
|
152
|
+
message: chalk__default["default"].blue("Enter the owner(s) of the plugin. If specified, this will be added to CODEOWNERS for the plugin path. [optional]"),
|
|
153
153
|
validate: (value) => {
|
|
154
154
|
if (!value) {
|
|
155
155
|
return true;
|
|
156
156
|
}
|
|
157
157
|
const ownerIds = tasks.parseOwnerIds(value);
|
|
158
158
|
if (!ownerIds) {
|
|
159
|
-
return chalk__default[
|
|
159
|
+
return chalk__default["default"].red("The owner must be a space separated list of team names (e.g. @org/team-name), usernames (e.g. @username), or the email addresses of users (e.g. user@example.com).");
|
|
160
160
|
}
|
|
161
161
|
return true;
|
|
162
162
|
}
|
|
163
163
|
});
|
|
164
164
|
}
|
|
165
|
-
const answers = await inquirer__default[
|
|
165
|
+
const answers = await inquirer__default["default"].prompt(questions);
|
|
166
166
|
const pluginId = cmd.backend && !answers.id.endsWith("-backend") ? `${answers.id}-backend` : answers.id;
|
|
167
167
|
const name = cmd.scope ? `@${cmd.scope.replace(/^@/, "")}/plugin-${pluginId}` : `plugin-${pluginId}`;
|
|
168
|
-
const pluginVar = `${camelCase__default[
|
|
169
|
-
const extensionName = `${upperFirst__default[
|
|
168
|
+
const pluginVar = `${camelCase__default["default"](answers.id)}Plugin`;
|
|
169
|
+
const extensionName = `${upperFirst__default["default"](camelCase__default["default"](answers.id))}Page`;
|
|
170
170
|
const npmRegistry = cmd.npmRegistry && cmd.scope ? cmd.npmRegistry : "";
|
|
171
171
|
const privatePackage = cmd.private === false ? false : true;
|
|
172
|
-
const isMonoRepo = await fs__default[
|
|
172
|
+
const isMonoRepo = await fs__default["default"].pathExists(index.paths.resolveTargetRoot("lerna.json"));
|
|
173
173
|
const appPackage = index.paths.resolveTargetRoot("packages/app");
|
|
174
174
|
const templateDir = index.paths.resolveOwn(cmd.backend ? "templates/default-backend-plugin" : "templates/default-plugin");
|
|
175
175
|
const pluginDir = isMonoRepo ? index.paths.resolveTargetRoot("plugins", pluginId) : index.paths.resolveTargetRoot(pluginId);
|
|
176
|
-
const {version: pluginVersion} = isMonoRepo ? await fs__default[
|
|
176
|
+
const { version: pluginVersion } = isMonoRepo ? await fs__default["default"].readJson(index.paths.resolveTargetRoot("lerna.json")) : { version: "0.1.0" };
|
|
177
177
|
let lockfile;
|
|
178
178
|
try {
|
|
179
179
|
lockfile = await Lockfile.Lockfile.load(index.paths.resolveTargetRoot("yarn.lock"));
|
|
@@ -185,7 +185,7 @@ var createPlugin = async (cmd) => {
|
|
|
185
185
|
tasks.Task.section("Checking if the plugin ID is available");
|
|
186
186
|
await checkExists(pluginDir);
|
|
187
187
|
tasks.Task.section("Creating a temporary plugin directory");
|
|
188
|
-
const tempDir = await fs__default[
|
|
188
|
+
const tempDir = await fs__default["default"].mkdtemp(path.join(os__default["default"].tmpdir(), `backstage-plugin-${pluginId}`));
|
|
189
189
|
try {
|
|
190
190
|
tasks.Task.section("Preparing files");
|
|
191
191
|
await tasks.templatingTask(templateDir, tempDir, {
|
|
@@ -201,7 +201,7 @@ var createPlugin = async (cmd) => {
|
|
|
201
201
|
await movePlugin(tempDir, pluginDir, pluginId);
|
|
202
202
|
tasks.Task.section("Building the plugin");
|
|
203
203
|
await buildPlugin(pluginDir);
|
|
204
|
-
if (await fs__default[
|
|
204
|
+
if (await fs__default["default"].pathExists(appPackage) && !cmd.backend) {
|
|
205
205
|
tasks.Task.section("Adding plugin as dependency in app");
|
|
206
206
|
await addPluginDependencyToApp(index.paths.targetRoot, name, pluginVersion);
|
|
207
207
|
tasks.Task.section("Import plugin in app");
|
|
@@ -211,7 +211,7 @@ var createPlugin = async (cmd) => {
|
|
|
211
211
|
await tasks.addCodeownersEntry(`/plugins/${pluginId}`, answers.owner);
|
|
212
212
|
}
|
|
213
213
|
tasks.Task.log();
|
|
214
|
-
tasks.Task.log(`\u{1F947} Successfully created ${chalk__default[
|
|
214
|
+
tasks.Task.log(`\u{1F947} Successfully created ${chalk__default["default"].cyan(`${name}`)}`);
|
|
215
215
|
tasks.Task.log();
|
|
216
216
|
tasks.Task.exit();
|
|
217
217
|
} catch (error) {
|
|
@@ -230,6 +230,6 @@ exports.addExportStatement = addExportStatement;
|
|
|
230
230
|
exports.addPluginDependencyToApp = addPluginDependencyToApp;
|
|
231
231
|
exports.addPluginExtensionToApp = addPluginExtensionToApp;
|
|
232
232
|
exports.capitalize = capitalize;
|
|
233
|
-
exports
|
|
233
|
+
exports["default"] = createPlugin;
|
|
234
234
|
exports.movePlugin = movePlugin;
|
|
235
|
-
//# sourceMappingURL=createPlugin-
|
|
235
|
+
//# sourceMappingURL=createPlugin-756c48b5.cjs.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var fs = require('fs-extra');
|
|
4
|
-
var index = require('./index-
|
|
4
|
+
var index = require('./index-a2419466.cjs.js');
|
|
5
5
|
var webpack = require('webpack');
|
|
6
|
-
var paths = require('./paths-
|
|
6
|
+
var paths = require('./paths-2bc1bd1d.cjs.js');
|
|
7
7
|
require('commander');
|
|
8
8
|
require('chalk');
|
|
9
9
|
require('semver');
|
|
@@ -19,8 +19,8 @@ require('webpack-node-externals');
|
|
|
19
19
|
require('terser-webpack-plugin');
|
|
20
20
|
require('./parallel-a4714c72.cjs.js');
|
|
21
21
|
require('mini-css-extract-plugin');
|
|
22
|
-
require('./svgrTemplate-
|
|
23
|
-
require('./run-
|
|
22
|
+
require('./svgrTemplate-f19e974c.cjs.js');
|
|
23
|
+
require('./run-16b1d94a.cjs.js');
|
|
24
24
|
require('child_process');
|
|
25
25
|
require('util');
|
|
26
26
|
require('lodash/pickBy');
|
|
@@ -36,7 +36,7 @@ async function serveBackend(options) {
|
|
|
36
36
|
...options,
|
|
37
37
|
isDev: true
|
|
38
38
|
});
|
|
39
|
-
const compiler = webpack__default[
|
|
39
|
+
const compiler = webpack__default["default"](config, (err) => {
|
|
40
40
|
if (err) {
|
|
41
41
|
console.error(err);
|
|
42
42
|
} else
|
|
@@ -56,7 +56,7 @@ async function serveBackend(options) {
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
var dev = async (cmd) => {
|
|
59
|
-
await fs__default[
|
|
59
|
+
await fs__default["default"].remove(index.paths.resolveTarget("dist"));
|
|
60
60
|
const waitForExit = await serveBackend({
|
|
61
61
|
entry: "src/index",
|
|
62
62
|
checksEnabled: cmd.check,
|
|
@@ -66,5 +66,5 @@ var dev = async (cmd) => {
|
|
|
66
66
|
await waitForExit();
|
|
67
67
|
};
|
|
68
68
|
|
|
69
|
-
exports
|
|
70
|
-
//# sourceMappingURL=dev-
|
|
69
|
+
exports["default"] = dev;
|
|
70
|
+
//# sourceMappingURL=dev-beba26fd.cjs.js.map
|