@backstage/cli 0.30.0-next.2 → 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/CHANGELOG.md +91 -0
  2. package/dist/commands/index.cjs.js +3 -0
  3. package/dist/commands/new/new.cjs.js +39 -80
  4. package/dist/commands/start/command.cjs.js +26 -0
  5. package/dist/lib/bundler/config.cjs.js +1 -1
  6. package/dist/lib/new/createNewPackage.cjs.js +32 -0
  7. package/dist/lib/new/defaultTemplates.cjs.js +16 -0
  8. package/dist/lib/new/execution/PortableTemplater.cjs.js +91 -0
  9. package/dist/lib/new/execution/executePortableTemplate.cjs.js +54 -0
  10. package/dist/lib/new/execution/installNewPackage.cjs.js +127 -0
  11. package/dist/lib/new/execution/writeTemplateContents.cjs.js +111 -0
  12. package/dist/lib/new/preparation/collectPortableTemplateInput.cjs.js +157 -0
  13. package/dist/lib/new/preparation/loadPortableTemplate.cjs.js +82 -0
  14. package/dist/lib/new/preparation/loadPortableTemplateConfig.cjs.js +121 -0
  15. package/dist/lib/new/preparation/resolvePackageParams.cjs.js +40 -0
  16. package/dist/lib/new/preparation/selectTemplateInteractively.cjs.js +38 -0
  17. package/dist/lib/new/types.cjs.js +15 -4
  18. package/dist/lib/tasks.cjs.js +0 -111
  19. package/dist/packages/backend-defaults/package.json.cjs.js +1 -1
  20. package/dist/packages/backend-plugin-api/package.json.cjs.js +1 -1
  21. package/dist/packages/backend-test-utils/package.json.cjs.js +1 -1
  22. package/dist/packages/cli/package.json.cjs.js +4 -3
  23. package/dist/packages/core-app-api/package.json.cjs.js +1 -1
  24. package/dist/packages/core-components/package.json.cjs.js +1 -1
  25. package/dist/packages/core-plugin-api/package.json.cjs.js +1 -1
  26. package/dist/packages/dev-utils/package.json.cjs.js +1 -1
  27. package/dist/packages/test-utils/package.json.cjs.js +1 -1
  28. package/dist/packages/theme/package.json.cjs.js +1 -1
  29. package/dist/plugins/auth-backend/package.json.cjs.js +1 -1
  30. package/dist/plugins/auth-backend-module-guest-provider/package.json.cjs.js +1 -1
  31. package/dist/plugins/catalog-node/package.json.cjs.js +1 -1
  32. package/dist/plugins/scaffolder-node/package.json.cjs.js +1 -1
  33. package/dist/plugins/scaffolder-node-test-utils/package.json.cjs.js +1 -1
  34. package/package.json +30 -29
  35. package/templates/{default-backend-plugin → backend-plugin}/README.md.hbs +4 -4
  36. package/templates/{default-backend-plugin → backend-plugin}/dev/index.ts.hbs +5 -5
  37. package/templates/{default-backend-plugin → backend-plugin}/package.json.hbs +1 -9
  38. package/templates/backend-plugin/portable-template.yaml +5 -0
  39. package/templates/{default-backend-plugin → backend-plugin}/src/plugin.test.ts.hbs +5 -5
  40. package/templates/{default-backend-plugin → backend-plugin}/src/plugin.ts.hbs +1 -1
  41. package/templates/{default-backend-module → backend-plugin-module}/README.md.hbs +1 -1
  42. package/templates/{default-backend-module → backend-plugin-module}/package.json.hbs +1 -9
  43. package/templates/backend-plugin-module/portable-template.yaml +5 -0
  44. package/templates/{default-plugin → frontend-plugin}/README.md.hbs +3 -3
  45. package/templates/{default-plugin → frontend-plugin}/dev/index.tsx.hbs +1 -1
  46. package/templates/{default-plugin → frontend-plugin}/package.json.hbs +1 -9
  47. package/templates/frontend-plugin/portable-template.yaml +6 -0
  48. package/templates/{default-plugin → frontend-plugin}/src/components/ExampleComponent/ExampleComponent.test.tsx.hbs +1 -1
  49. package/templates/{default-plugin → frontend-plugin}/src/components/ExampleComponent/ExampleComponent.tsx.hbs +1 -1
  50. package/templates/{default-plugin → frontend-plugin}/src/plugin.test.ts.hbs +1 -1
  51. package/templates/{default-plugin → frontend-plugin}/src/plugin.ts.hbs +1 -1
  52. package/templates/{default-plugin → frontend-plugin}/src/routes.ts.hbs +1 -1
  53. package/templates/{node-library-package → node-library}/README.md.hbs +2 -2
  54. package/templates/{node-library-package → node-library}/package.json.hbs +1 -9
  55. package/templates/node-library/portable-template.yaml +3 -0
  56. package/templates/plugin-common-library/README.md.hbs +5 -0
  57. package/templates/{default-common-plugin-package → plugin-common-library}/package.json.hbs +2 -10
  58. package/templates/plugin-common-library/portable-template.yaml +3 -0
  59. package/templates/{default-common-plugin-package → plugin-common-library}/src/index.ts.hbs +1 -1
  60. package/templates/plugin-node-library/README.md.hbs +5 -0
  61. package/templates/{default-node-plugin-package → plugin-node-library}/package.json.hbs +2 -10
  62. package/templates/plugin-node-library/portable-template.yaml +3 -0
  63. package/templates/{default-node-plugin-package → plugin-node-library}/src/index.ts.hbs +1 -1
  64. package/templates/plugin-web-library/README.md.hbs +5 -0
  65. package/templates/{default-react-plugin-package → plugin-web-library}/package.json.hbs +2 -10
  66. package/templates/plugin-web-library/portable-template.yaml +3 -0
  67. package/templates/{default-react-plugin-package → plugin-web-library}/src/index.ts.hbs +1 -1
  68. package/templates/scaffolder-backend-module/README.md.hbs +5 -0
  69. package/templates/{scaffolder-module → scaffolder-backend-module}/package.json.hbs +2 -10
  70. package/templates/scaffolder-backend-module/portable-template.yaml +6 -0
  71. package/templates/{scaffolder-module → scaffolder-backend-module}/src/index.ts.hbs +1 -1
  72. package/templates/{web-library-package → web-library}/README.md.hbs +2 -2
  73. package/templates/{web-library-package → web-library}/package.json.hbs +1 -9
  74. package/templates/web-library/portable-template.yaml +3 -0
  75. package/dist/lib/new/FactoryRegistry.cjs.js +0 -96
  76. package/dist/lib/new/factories/backendModule.cjs.js +0 -82
  77. package/dist/lib/new/factories/backendPlugin.cjs.js +0 -78
  78. package/dist/lib/new/factories/common/prompts.cjs.js +0 -57
  79. package/dist/lib/new/factories/common/tasks.cjs.js +0 -66
  80. package/dist/lib/new/factories/common/util.cjs.js +0 -16
  81. package/dist/lib/new/factories/frontendPlugin.cjs.js +0 -107
  82. package/dist/lib/new/factories/index.cjs.js +0 -24
  83. package/dist/lib/new/factories/nodeLibraryPackage.cjs.js +0 -57
  84. package/dist/lib/new/factories/pluginCommon.cjs.js +0 -58
  85. package/dist/lib/new/factories/pluginNode.cjs.js +0 -58
  86. package/dist/lib/new/factories/pluginWeb.cjs.js +0 -58
  87. package/dist/lib/new/factories/scaffolderModule.cjs.js +0 -90
  88. package/dist/lib/new/factories/webLibraryPackage.cjs.js +0 -57
  89. package/templates/default-backend-module/tsconfig.json +0 -9
  90. package/templates/default-backend-plugin/tsconfig.json +0 -13
  91. package/templates/default-common-plugin-package/README.md.hbs +0 -5
  92. package/templates/default-common-plugin-package/tsconfig.json +0 -9
  93. package/templates/default-node-plugin-package/README.md.hbs +0 -5
  94. package/templates/default-node-plugin-package/tsconfig.json +0 -9
  95. package/templates/default-plugin/tsconfig.json +0 -12
  96. package/templates/default-react-plugin-package/README.md.hbs +0 -5
  97. package/templates/default-react-plugin-package/tsconfig.json +0 -11
  98. package/templates/node-library-package/tsconfig.json +0 -11
  99. package/templates/scaffolder-module/README.md.hbs +0 -5
  100. package/templates/scaffolder-module/tsconfig.json +0 -9
  101. package/templates/web-library-package/tsconfig.json +0 -11
  102. /package/templates/{default-backend-plugin → backend-plugin}/.eslintrc.js.hbs +0 -0
  103. /package/templates/{default-backend-plugin → backend-plugin}/src/index.ts.hbs +0 -0
  104. /package/templates/{default-backend-plugin → backend-plugin}/src/router.test.ts +0 -0
  105. /package/templates/{default-backend-plugin → backend-plugin}/src/router.ts +0 -0
  106. /package/templates/{default-backend-plugin → backend-plugin}/src/services/TodoListService/createTodoListService.ts +0 -0
  107. /package/templates/{default-backend-plugin → backend-plugin}/src/services/TodoListService/index.ts +0 -0
  108. /package/templates/{default-backend-plugin → backend-plugin}/src/services/TodoListService/types.ts +0 -0
  109. /package/templates/{default-backend-plugin → backend-plugin}/src/setupTests.ts +0 -0
  110. /package/templates/{default-backend-module → backend-plugin-module}/.eslintrc.js.hbs +0 -0
  111. /package/templates/{default-backend-module → backend-plugin-module}/src/index.ts.hbs +0 -0
  112. /package/templates/{default-backend-module → backend-plugin-module}/src/module.ts.hbs +0 -0
  113. /package/templates/{default-common-plugin-package → frontend-plugin}/.eslintrc.js.hbs +0 -0
  114. /package/templates/{default-plugin → frontend-plugin}/src/components/ExampleComponent/index.ts +0 -0
  115. /package/templates/{default-plugin → frontend-plugin}/src/components/ExampleFetchComponent/ExampleFetchComponent.test.tsx.hbs +0 -0
  116. /package/templates/{default-plugin → frontend-plugin}/src/components/ExampleFetchComponent/ExampleFetchComponent.tsx.hbs +0 -0
  117. /package/templates/{default-plugin → frontend-plugin}/src/components/ExampleFetchComponent/index.ts +0 -0
  118. /package/templates/{default-plugin → frontend-plugin}/src/index.ts.hbs +0 -0
  119. /package/templates/{default-plugin → frontend-plugin}/src/setupTests.ts +0 -0
  120. /package/templates/{default-node-plugin-package → node-library}/.eslintrc.js.hbs +0 -0
  121. /package/templates/{node-library-package → node-library}/src/index.ts.hbs +0 -0
  122. /package/templates/{default-common-plugin-package → node-library}/src/setupTests.ts +0 -0
  123. /package/templates/{default-plugin → plugin-common-library}/.eslintrc.js.hbs +0 -0
  124. /package/templates/{default-node-plugin-package → plugin-common-library}/src/setupTests.ts +0 -0
  125. /package/templates/{default-react-plugin-package → plugin-node-library}/.eslintrc.js.hbs +0 -0
  126. /package/templates/{node-library-package → plugin-node-library}/src/setupTests.ts +0 -0
  127. /package/templates/{node-library-package → plugin-web-library}/.eslintrc.js.hbs +0 -0
  128. /package/templates/{default-react-plugin-package → plugin-web-library}/src/components/ExampleComponent/ExampleComponent.test.tsx +0 -0
  129. /package/templates/{default-react-plugin-package → plugin-web-library}/src/components/ExampleComponent/ExampleComponent.tsx +0 -0
  130. /package/templates/{default-react-plugin-package → plugin-web-library}/src/components/ExampleComponent/index.ts +0 -0
  131. /package/templates/{default-react-plugin-package → plugin-web-library}/src/components/index.ts +0 -0
  132. /package/templates/{default-react-plugin-package → plugin-web-library}/src/hooks/index.ts +0 -0
  133. /package/templates/{default-react-plugin-package → plugin-web-library}/src/hooks/useExample/index.ts +0 -0
  134. /package/templates/{default-react-plugin-package → plugin-web-library}/src/hooks/useExample/useExample.ts +0 -0
  135. /package/templates/{default-react-plugin-package → plugin-web-library}/src/setupTests.ts +0 -0
  136. /package/templates/{scaffolder-module → scaffolder-backend-module}/.eslintrc.js.hbs +0 -0
  137. /package/templates/{scaffolder-module → scaffolder-backend-module}/src/actions/example.test.ts +0 -0
  138. /package/templates/{scaffolder-module → scaffolder-backend-module}/src/actions/example.ts +0 -0
  139. /package/templates/{scaffolder-module → scaffolder-backend-module}/src/module.ts +0 -0
  140. /package/templates/{web-library-package → web-library}/.eslintrc.js.hbs +0 -0
  141. /package/templates/{web-library-package → web-library}/src/index.ts.hbs +0 -0
  142. /package/templates/{web-library-package → web-library}/src/setupTests.ts +0 -0
@@ -1,4 +1,4 @@
1
- # {{name}}
1
+ # {{packageName}}
2
2
 
3
3
  _This package was created through the Backstage CLI_.
4
4
 
@@ -8,5 +8,5 @@ Install the package via Yarn:
8
8
 
9
9
  ```sh
10
10
  cd <package-dir> # if within a monorepo
11
- yarn add {{name}}
11
+ yarn add {{packageName}}
12
12
  ```
@@ -1,16 +1,8 @@
1
1
  {
2
- "name": "{{name}}",
3
- "version": "{{pluginVersion}}",
2
+ "name": "{{packageName}}",
4
3
  "main": "src/index.ts",
5
4
  "types": "src/index.ts",
6
- "license": "{{license}}",
7
- {{#if privatePackage}}
8
- "private": {{privatePackage}},
9
- {{/if}}
10
5
  "publishConfig": {
11
- {{#if npmRegistry}}
12
- "registry": "{{npmRegistry}}",
13
- {{/if}}
14
6
  "access": "public",
15
7
  "main": "dist/index.cjs.js",
16
8
  "types": "dist/index.d.ts"
@@ -0,0 +1,3 @@
1
+ name: node-library
2
+ role: node-library
3
+ description: A library package, exporting shared functionality for Node.js environments
@@ -0,0 +1,5 @@
1
+ # {{packageName}}
2
+
3
+ Welcome to the common package for the {{pluginId}} plugin!
4
+
5
+ _This plugin was created through the Backstage CLI_
@@ -1,17 +1,9 @@
1
1
  {
2
- "name": "{{name}}",
3
- "description": "Common functionalities for the {{id}} plugin",
4
- "version": "{{pluginVersion}}",
2
+ "name": "{{packageName}}",
3
+ "description": "Common functionalities for the {{pluginId}} plugin",
5
4
  "main": "src/index.ts",
6
5
  "types": "src/index.ts",
7
- "license": "{{license}}",
8
- {{#if privatePackage}}
9
- "private": {{privatePackage}},
10
- {{/if}}
11
6
  "publishConfig": {
12
- {{#if npmRegistry}}
13
- "registry": "{{npmRegistry}}",
14
- {{/if}}
15
7
  "access": "public",
16
8
  "main": "dist/index.cjs.js",
17
9
  "module": "dist/index.esm.js",
@@ -0,0 +1,3 @@
1
+ name: plugin-common-library
2
+ role: plugin-common-library
3
+ description: A new isomorphic common plugin package
@@ -1,6 +1,6 @@
1
1
  /***/
2
2
  /**
3
- * Common functionalities for the {{id}} plugin.
3
+ * Common functionalities for the {{pluginId}} plugin.
4
4
  *
5
5
  * @packageDocumentation
6
6
  */
@@ -0,0 +1,5 @@
1
+ # {{packageName}}
2
+
3
+ Welcome to the Node.js library package for the {{pluginId}} plugin!
4
+
5
+ _This plugin was created through the Backstage CLI_
@@ -1,17 +1,9 @@
1
1
  {
2
- "name": "{{name}}",
3
- "description": "Node.js library for the {{id}} plugin",
4
- "version": "{{pluginVersion}}",
2
+ "name": "{{packageName}}",
3
+ "description": "Node.js library for the {{pluginId}} plugin",
5
4
  "main": "src/index.ts",
6
5
  "types": "src/index.ts",
7
- "license": "{{license}}",
8
- {{#if privatePackage}}
9
- "private": {{privatePackage}},
10
- {{/if}}
11
6
  "publishConfig": {
12
- {{#if npmRegistry}}
13
- "registry": "{{npmRegistry}}",
14
- {{/if}}
15
7
  "access": "public",
16
8
  "main": "dist/index.cjs.js",
17
9
  "types": "dist/index.d.ts"
@@ -0,0 +1,3 @@
1
+ name: plugin-node-library
2
+ role: plugin-node-library
3
+ description: A new Node.js library plugin package
@@ -1,6 +1,6 @@
1
1
  /***/
2
2
  /**
3
- * Node.js library for the {{id}} plugin.
3
+ * Node.js library for the {{pluginId}} plugin.
4
4
  *
5
5
  * @packageDocumentation
6
6
  */
@@ -0,0 +1,5 @@
1
+ # {{packageName}}
2
+
3
+ Welcome to the web library package for the {{pluginId}} plugin!
4
+
5
+ _This plugin was created through the Backstage CLI_
@@ -1,17 +1,9 @@
1
1
  {
2
- "name": "{{name}}",
3
- "description": "Web library for the {{id}} plugin",
4
- "version": "{{pluginVersion}}",
2
+ "name": "{{packageName}}",
3
+ "description": "Web library for the {{pluginId}} plugin",
5
4
  "main": "src/index.ts",
6
5
  "types": "src/index.ts",
7
- "license": "{{license}}",
8
- {{#if privatePackage}}
9
- "private": {{privatePackage}},
10
- {{/if}}
11
6
  "publishConfig": {
12
- {{#if npmRegistry}}
13
- "registry": "{{npmRegistry}}",
14
- {{/if}}
15
7
  "access": "public",
16
8
  "main": "dist/index.esm.js",
17
9
  "types": "dist/index.d.ts"
@@ -0,0 +1,3 @@
1
+ name: plugin-web-library
2
+ role: plugin-web-library
3
+ description: A new web library plugin package
@@ -1,6 +1,6 @@
1
1
  /***/
2
2
  /**
3
- * Web library for the {{id}} plugin.
3
+ * Web library for the {{pluginId}} plugin.
4
4
  *
5
5
  * @packageDocumentation
6
6
  */
@@ -0,0 +1,5 @@
1
+ # {{packageName}}
2
+
3
+ The {{moduleId}} module for [@backstage/plugin-scaffolder-backend](https://www.npmjs.com/package/@backstage/plugin-scaffolder-backend).
4
+
5
+ _This plugin was created through the Backstage CLI_
@@ -1,17 +1,9 @@
1
1
  {
2
- "name": "{{name}}",
3
- "description": "The {{id}} module for @backstage/plugin-scaffolder-backend",
4
- "version": "{{pluginVersion}}",
2
+ "name": "{{packageName}}",
3
+ "description": "The {{moduleId}} module for @backstage/plugin-scaffolder-backend",
5
4
  "main": "src/index.ts",
6
5
  "types": "src/index.ts",
7
- "license": "{{license}}",
8
- {{#if privatePackage}}
9
- "private": {{privatePackage}},
10
- {{/if}}
11
6
  "publishConfig": {
12
- {{#if npmRegistry}}
13
- "registry": "{{npmRegistry}}",
14
- {{/if}}
15
7
  "access": "public",
16
8
  "main": "dist/index.cjs.js",
17
9
  "types": "dist/index.d.ts"
@@ -0,0 +1,6 @@
1
+ name: scaffolder-backend-module
2
+ role: backend-plugin-module
3
+ description: A module exporting custom actions for @backstage/plugin-scaffolder-backend
4
+ values:
5
+ pluginId: scaffolder
6
+ moduleVar: '{{ camelCase pluginId }}Module{{ upperFirst ( camelCase moduleId ) }}'
@@ -1,6 +1,6 @@
1
1
  /***/
2
2
  /**
3
- * The {{id}} module for @backstage/plugin-scaffolder-backend.
3
+ * The {{moduleId}} module for @backstage/plugin-scaffolder-backend.
4
4
  *
5
5
  * @packageDocumentation
6
6
  */
@@ -1,4 +1,4 @@
1
- # {{name}}
1
+ # {{packageName}}
2
2
 
3
3
  _This package was created through the Backstage CLI_.
4
4
 
@@ -8,5 +8,5 @@ Install the package via Yarn:
8
8
 
9
9
  ```sh
10
10
  cd <package-dir> # if within a monorepo
11
- yarn add {{name}}
11
+ yarn add {{packageName}}
12
12
  ```
@@ -1,16 +1,8 @@
1
1
  {
2
- "name": "{{name}}",
3
- "version": "{{pluginVersion}}",
2
+ "name": "{{packageName}}",
4
3
  "main": "src/index.ts",
5
4
  "types": "src/index.ts",
6
- "license": "{{license}}",
7
- {{#if privatePackage}}
8
- "private": {{privatePackage}},
9
- {{/if}}
10
5
  "publishConfig": {
11
- {{#if npmRegistry}}
12
- "registry": "{{npmRegistry}}",
13
- {{/if}}
14
6
  "access": "public",
15
7
  "main": "dist/index.esm.js",
16
8
  "types": "dist/index.d.ts"
@@ -0,0 +1,3 @@
1
+ name: web-library
2
+ role: web-library
3
+ description: A library package, exporting shared functionality for web environments
@@ -1,96 +0,0 @@
1
- 'use strict';
2
-
3
- var chalk = require('chalk');
4
- var inquirer = require('inquirer');
5
- var index = require('./factories/index.cjs.js');
6
- var partition = require('lodash/partition');
7
-
8
- function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
9
-
10
- var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
11
- var inquirer__default = /*#__PURE__*/_interopDefaultCompat(inquirer);
12
- var partition__default = /*#__PURE__*/_interopDefaultCompat(partition);
13
-
14
- function applyPromptMessageTransforms(prompt, transforms) {
15
- return {
16
- ...prompt,
17
- message: prompt.message && (async (answers) => {
18
- if (typeof prompt.message === "function") {
19
- return transforms.message(await prompt.message(answers));
20
- }
21
- return transforms.message(await prompt.message);
22
- }),
23
- validate: prompt.validate && (async (...args) => {
24
- const result = await prompt.validate(...args);
25
- if (typeof result === "string") {
26
- return transforms.error(result);
27
- }
28
- return result;
29
- })
30
- };
31
- }
32
- class FactoryRegistry {
33
- static factoryMap = new Map(
34
- Object.values(index).map((factory) => [factory.name, factory])
35
- );
36
- static async interactiveSelect(preselected) {
37
- let selected = preselected;
38
- if (!selected) {
39
- const answers = await inquirer__default.default.prompt([
40
- {
41
- type: "list",
42
- name: "name",
43
- message: "What do you want to create?",
44
- choices: Array.from(this.factoryMap.values()).map((factory2) => ({
45
- name: `${factory2.name} - ${factory2.description}`,
46
- value: factory2.name
47
- }))
48
- }
49
- ]);
50
- selected = answers.name;
51
- }
52
- const factory = this.factoryMap.get(selected);
53
- if (!factory) {
54
- throw new Error(`Unknown selection '${selected}'`);
55
- }
56
- return factory;
57
- }
58
- static async populateOptions(factory, provided) {
59
- let currentOptions = provided;
60
- if (factory.optionsDiscovery) {
61
- const discoveredOptions = await factory.optionsDiscovery();
62
- currentOptions = {
63
- ...currentOptions,
64
- ...discoveredOptions
65
- };
66
- }
67
- if (factory.optionsPrompts) {
68
- const [hasAnswers, needsAnswers] = partition__default.default(
69
- factory.optionsPrompts,
70
- (option) => option.name in currentOptions
71
- );
72
- for (const option of hasAnswers) {
73
- const value = provided[option.name];
74
- if (option.validate) {
75
- const result = option.validate(value);
76
- if (result !== true) {
77
- throw new Error(`Invalid option '${option.name}'. ${result}`);
78
- }
79
- }
80
- }
81
- currentOptions = await inquirer__default.default.prompt(
82
- needsAnswers.map(
83
- (option) => applyPromptMessageTransforms(option, {
84
- message: chalk__default.default.blue,
85
- error: chalk__default.default.red
86
- })
87
- ),
88
- currentOptions
89
- );
90
- }
91
- return currentOptions;
92
- }
93
- }
94
-
95
- exports.FactoryRegistry = FactoryRegistry;
96
- //# sourceMappingURL=FactoryRegistry.cjs.js.map
@@ -1,82 +0,0 @@
1
- 'use strict';
2
-
3
- var fs = require('fs-extra');
4
- var chalk = require('chalk');
5
- var camelCase = require('lodash/camelCase');
6
- var paths = require('../../paths.cjs.js');
7
- var codeowners = require('../../codeowners/codeowners.cjs.js');
8
- var types = require('../types.cjs.js');
9
- var tasks = require('../../tasks.cjs.js');
10
- var prompts = require('./common/prompts.cjs.js');
11
- var tasks$1 = require('./common/tasks.cjs.js');
12
- var util = require('./common/util.cjs.js');
13
-
14
- function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
15
-
16
- var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
17
- var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
18
- var camelCase__default = /*#__PURE__*/_interopDefaultCompat(camelCase);
19
-
20
- const backendModule = types.createFactory({
21
- name: "backend-module",
22
- description: "A new backend module that extends an existing backend plugin with additional features",
23
- optionsDiscovery: async () => ({
24
- codeOwnersPath: await codeowners.getCodeownersFilePath(paths.paths.targetRoot)
25
- }),
26
- optionsPrompts: [prompts.pluginIdPrompt(), prompts.moduleIdIdPrompt(), prompts.ownerPrompt()],
27
- async create(options, ctx) {
28
- const { id: pluginId, moduleId } = options;
29
- const dirName = `${pluginId}-backend-module-${moduleId}`;
30
- const name = util.resolvePackageName({
31
- baseName: dirName,
32
- scope: ctx.scope,
33
- plugin: true
34
- });
35
- tasks.Task.log();
36
- tasks.Task.log(`Creating backend module ${chalk__default.default.cyan(name)}`);
37
- const targetDir = ctx.isMonoRepo ? paths.paths.resolveTargetRoot("plugins", dirName) : paths.paths.resolveTargetRoot(`backstage-plugin-${dirName}`);
38
- const moduleCamelCase = camelCase__default.default(moduleId);
39
- const modulePascalCase = moduleCamelCase[0].toUpperCase() + moduleCamelCase.slice(1);
40
- const moduleVar = `${camelCase__default.default(pluginId)}Module${modulePascalCase}`;
41
- await tasks$1.executePluginPackageTemplate(ctx, {
42
- targetDir,
43
- templateName: "default-backend-module",
44
- values: {
45
- pluginId,
46
- moduleId,
47
- name,
48
- moduleVar,
49
- packageVersion: ctx.defaultVersion,
50
- privatePackage: ctx.private,
51
- npmRegistry: ctx.npmRegistry,
52
- license: ctx.license
53
- }
54
- });
55
- if (await fs__default.default.pathExists(paths.paths.resolveTargetRoot("packages/backend"))) {
56
- await tasks.Task.forItem("backend", "adding dependency", async () => {
57
- await tasks.addPackageDependency(
58
- paths.paths.resolveTargetRoot("packages/backend/package.json"),
59
- {
60
- dependencies: {
61
- [name]: `^${ctx.defaultVersion}`
62
- }
63
- }
64
- );
65
- });
66
- }
67
- await tasks.addToBackend(name, {
68
- type: "module"
69
- });
70
- if (options.owner) {
71
- await codeowners.addCodeownersEntry(`/plugins/${dirName}`, options.owner);
72
- }
73
- await tasks.Task.forCommand("yarn install", { cwd: targetDir, optional: true });
74
- await tasks.Task.forCommand("yarn lint --fix", {
75
- cwd: targetDir,
76
- optional: true
77
- });
78
- }
79
- });
80
-
81
- exports.backendModule = backendModule;
82
- //# sourceMappingURL=backendModule.cjs.js.map
@@ -1,78 +0,0 @@
1
- 'use strict';
2
-
3
- var fs = require('fs-extra');
4
- var chalk = require('chalk');
5
- var camelCase = require('lodash/camelCase');
6
- var paths = require('../../paths.cjs.js');
7
- var codeowners = require('../../codeowners/codeowners.cjs.js');
8
- var types = require('../types.cjs.js');
9
- var tasks = require('../../tasks.cjs.js');
10
- var prompts = require('./common/prompts.cjs.js');
11
- var tasks$1 = require('./common/tasks.cjs.js');
12
- var util = require('./common/util.cjs.js');
13
-
14
- function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
15
-
16
- var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
17
- var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
18
- var camelCase__default = /*#__PURE__*/_interopDefaultCompat(camelCase);
19
-
20
- const backendPlugin = types.createFactory({
21
- name: "backend-plugin",
22
- description: "A new backend plugin",
23
- optionsDiscovery: async () => ({
24
- codeOwnersPath: await codeowners.getCodeownersFilePath(paths.paths.targetRoot)
25
- }),
26
- optionsPrompts: [prompts.pluginIdPrompt(), prompts.ownerPrompt()],
27
- async create(options, ctx) {
28
- const { id } = options;
29
- const pluginId = `${id}-backend`;
30
- const name = util.resolvePackageName({
31
- baseName: pluginId,
32
- scope: ctx.scope,
33
- plugin: true
34
- });
35
- tasks.Task.log();
36
- tasks.Task.log(`Creating backend plugin ${chalk__default.default.cyan(name)}`);
37
- const targetDir = ctx.isMonoRepo ? paths.paths.resolveTargetRoot("plugins", pluginId) : paths.paths.resolveTargetRoot(`backstage-plugin-${pluginId}`);
38
- await tasks$1.executePluginPackageTemplate(ctx, {
39
- targetDir,
40
- templateName: "default-backend-plugin",
41
- values: {
42
- id,
43
- name,
44
- pluginVar: `${camelCase__default.default(id)}Plugin`,
45
- pluginVersion: ctx.defaultVersion,
46
- privatePackage: ctx.private,
47
- npmRegistry: ctx.npmRegistry,
48
- license: ctx.license
49
- }
50
- });
51
- if (await fs__default.default.pathExists(paths.paths.resolveTargetRoot("packages/backend"))) {
52
- await tasks.Task.forItem("backend", "adding dependency", async () => {
53
- await tasks.addPackageDependency(
54
- paths.paths.resolveTargetRoot("packages/backend/package.json"),
55
- {
56
- dependencies: {
57
- [name]: `^${ctx.defaultVersion}`
58
- }
59
- }
60
- );
61
- });
62
- }
63
- await tasks.addToBackend(name, {
64
- type: "plugin"
65
- });
66
- if (options.owner) {
67
- await codeowners.addCodeownersEntry(`/plugins/${id}`, options.owner);
68
- }
69
- await tasks.Task.forCommand("yarn install", { cwd: targetDir, optional: true });
70
- await tasks.Task.forCommand("yarn lint --fix", {
71
- cwd: targetDir,
72
- optional: true
73
- });
74
- }
75
- });
76
-
77
- exports.backendPlugin = backendPlugin;
78
- //# sourceMappingURL=backendPlugin.cjs.js.map
@@ -1,57 +0,0 @@
1
- 'use strict';
2
-
3
- var codeowners = require('../../../codeowners/codeowners.cjs.js');
4
-
5
- function pluginIdPrompt() {
6
- return {
7
- type: "input",
8
- name: "id",
9
- message: "Enter the ID of the plugin [required]",
10
- validate: (value) => {
11
- if (!value) {
12
- return "Please enter the ID of the plugin";
13
- } else if (!/^[a-z0-9]+(-[a-z0-9]+)*$/.test(value)) {
14
- return "Plugin IDs must be lowercase and contain only letters, digits, and dashes.";
15
- }
16
- return true;
17
- }
18
- };
19
- }
20
- function moduleIdIdPrompt() {
21
- return {
22
- type: "input",
23
- name: "moduleId",
24
- message: "Enter the ID of the module [required]",
25
- validate: (value) => {
26
- if (!value) {
27
- return "Please enter the ID of the module";
28
- } else if (!/^[a-z0-9]+(-[a-z0-9]+)*$/.test(value)) {
29
- return "Module IDs must be lowercase and contain only letters, digits, and dashes.";
30
- }
31
- return true;
32
- }
33
- };
34
- }
35
- function ownerPrompt() {
36
- return {
37
- type: "input",
38
- name: "owner",
39
- message: "Enter an owner to add to CODEOWNERS [optional]",
40
- when: (opts) => Boolean(opts.codeOwnersPath),
41
- validate: (value) => {
42
- if (!value) {
43
- return true;
44
- }
45
- const ownerIds = codeowners.parseOwnerIds(value);
46
- if (!ownerIds) {
47
- return "The owner must be a space separated list of team names (e.g. @org/team-name), usernames (e.g. @username), or the email addresses (e.g. user@example.com).";
48
- }
49
- return true;
50
- }
51
- };
52
- }
53
-
54
- exports.moduleIdIdPrompt = moduleIdIdPrompt;
55
- exports.ownerPrompt = ownerPrompt;
56
- exports.pluginIdPrompt = pluginIdPrompt;
57
- //# sourceMappingURL=prompts.cjs.js.map
@@ -1,66 +0,0 @@
1
- 'use strict';
2
-
3
- var fs = require('fs-extra');
4
- var chalk = require('chalk');
5
- var path = require('path');
6
- var paths = require('../../../paths.cjs.js');
7
- var tasks = require('../../../tasks.cjs.js');
8
- var Lockfile = require('../../../versioning/Lockfile.cjs.js');
9
- require('minimatch');
10
- require('@manypkg/get-packages');
11
- require('../../../yarn.cjs.js');
12
- require('../../../run.cjs.js');
13
- var version = require('../../../version.cjs.js');
14
-
15
- function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
16
-
17
- var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
18
- var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
19
-
20
- async function executePluginPackageTemplate(ctx, options) {
21
- const { targetDir } = options;
22
- let lockfile;
23
- try {
24
- lockfile = await Lockfile.Lockfile.load(paths.paths.resolveTargetRoot("yarn.lock"));
25
- } catch {
26
- }
27
- tasks.Task.section("Checking Prerequisites");
28
- const shortPluginDir = path.relative(paths.paths.targetRoot, targetDir);
29
- await tasks.Task.forItem("availability", shortPluginDir, async () => {
30
- if (await fs__default.default.pathExists(targetDir)) {
31
- throw new Error(
32
- `A package with the same plugin ID already exists at ${chalk__default.default.cyan(
33
- shortPluginDir
34
- )}. Please try again with a different ID.`
35
- );
36
- }
37
- });
38
- const tempDir = await tasks.Task.forItem("creating", "temp dir", async () => {
39
- return await ctx.createTemporaryDirectory("backstage-create");
40
- });
41
- tasks.Task.section("Executing Template");
42
- await tasks.templatingTask(
43
- paths.paths.resolveOwn("templates", options.templateName),
44
- tempDir,
45
- options.values,
46
- version.createPackageVersionProvider(lockfile),
47
- ctx.isMonoRepo
48
- );
49
- const pkgJsonPath = path.resolve(tempDir, "package.json");
50
- if (await fs__default.default.pathExists(pkgJsonPath)) {
51
- const pkgJson = await fs__default.default.readJson(pkgJsonPath);
52
- await fs__default.default.writeJson(pkgJsonPath, pkgJson, { spaces: 2 });
53
- }
54
- tasks.Task.section("Installing");
55
- await tasks.Task.forItem("moving", shortPluginDir, async () => {
56
- await fs__default.default.move(tempDir, targetDir).catch((error) => {
57
- throw new Error(
58
- `Failed to move package from ${tempDir} to ${targetDir}, ${error.message}`
59
- );
60
- });
61
- });
62
- ctx.markAsModified();
63
- }
64
-
65
- exports.executePluginPackageTemplate = executePluginPackageTemplate;
66
- //# sourceMappingURL=tasks.cjs.js.map
@@ -1,16 +0,0 @@
1
- 'use strict';
2
-
3
- const resolvePackageName = (options) => {
4
- const { baseName, scope, plugin } = options;
5
- if (scope) {
6
- if (plugin) {
7
- const pluginName = scope.startsWith("backstage") ? "plugin" : "backstage-plugin";
8
- return scope.includes("/") ? `@${scope}${pluginName}-${baseName}` : `@${scope}/${pluginName}-${baseName}`;
9
- }
10
- return scope.includes("/") ? `@${scope}${baseName}` : `@${scope}/${baseName}`;
11
- }
12
- return plugin ? `backstage-plugin-${baseName}` : baseName;
13
- };
14
-
15
- exports.resolvePackageName = resolvePackageName;
16
- //# sourceMappingURL=util.cjs.js.map