@backstage/create-app 0.5.21-next.0 → 0.5.21-next.2
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 +16 -0
- package/dist/createApp.cjs.js +132 -0
- package/dist/createApp.cjs.js.map +1 -0
- package/dist/index.cjs.js +7 -535
- package/dist/index.cjs.js.map +1 -1
- package/dist/lib/errors.cjs.js +44 -0
- package/dist/lib/errors.cjs.js.map +1 -0
- package/dist/lib/tasks.cjs.js +240 -0
- package/dist/lib/tasks.cjs.js.map +1 -0
- package/dist/lib/versions.cjs.js +112 -0
- package/dist/lib/versions.cjs.js.map +1 -0
- package/dist/package.json.cjs.js +6 -0
- package/dist/package.json.cjs.js.map +1 -0
- package/dist/packages/app-defaults/package.json.cjs.js +6 -0
- package/dist/packages/app-defaults/package.json.cjs.js.map +1 -0
- package/dist/packages/backend-defaults/package.json.cjs.js +6 -0
- package/dist/packages/backend-defaults/package.json.cjs.js.map +1 -0
- package/dist/packages/catalog-client/package.json.cjs.js +6 -0
- package/dist/packages/catalog-client/package.json.cjs.js.map +1 -0
- package/dist/packages/catalog-model/package.json.cjs.js +6 -0
- package/dist/packages/catalog-model/package.json.cjs.js.map +1 -0
- package/dist/packages/cli/package.json.cjs.js +6 -0
- package/dist/packages/cli/package.json.cjs.js.map +1 -0
- package/dist/packages/config/package.json.cjs.js +6 -0
- package/dist/packages/config/package.json.cjs.js.map +1 -0
- package/dist/packages/core-app-api/package.json.cjs.js +6 -0
- package/dist/packages/core-app-api/package.json.cjs.js.map +1 -0
- package/dist/packages/core-components/package.json.cjs.js +6 -0
- package/dist/packages/core-components/package.json.cjs.js.map +1 -0
- package/dist/packages/core-plugin-api/package.json.cjs.js +6 -0
- package/dist/packages/core-plugin-api/package.json.cjs.js.map +1 -0
- package/dist/packages/e2e-test-utils/package.json.cjs.js +6 -0
- package/dist/packages/e2e-test-utils/package.json.cjs.js.map +1 -0
- package/dist/packages/errors/package.json.cjs.js +6 -0
- package/dist/packages/errors/package.json.cjs.js.map +1 -0
- package/dist/packages/integration-react/package.json.cjs.js +6 -0
- package/dist/packages/integration-react/package.json.cjs.js.map +1 -0
- package/dist/packages/test-utils/package.json.cjs.js +6 -0
- package/dist/packages/test-utils/package.json.cjs.js.map +1 -0
- package/dist/packages/theme/package.json.cjs.js +6 -0
- package/dist/packages/theme/package.json.cjs.js.map +1 -0
- package/dist/plugins/api-docs/package.json.cjs.js +6 -0
- package/dist/plugins/api-docs/package.json.cjs.js.map +1 -0
- package/dist/plugins/app-backend/package.json.cjs.js +6 -0
- package/dist/plugins/app-backend/package.json.cjs.js.map +1 -0
- package/dist/plugins/auth-backend/package.json.cjs.js +6 -0
- package/dist/plugins/auth-backend/package.json.cjs.js.map +1 -0
- package/dist/plugins/auth-backend-module-github-provider/package.json.cjs.js +6 -0
- package/dist/plugins/auth-backend-module-github-provider/package.json.cjs.js.map +1 -0
- package/dist/plugins/auth-backend-module-guest-provider/package.json.cjs.js +6 -0
- package/dist/plugins/auth-backend-module-guest-provider/package.json.cjs.js.map +1 -0
- package/dist/plugins/auth-node/package.json.cjs.js +6 -0
- package/dist/plugins/auth-node/package.json.cjs.js.map +1 -0
- package/dist/plugins/catalog/package.json.cjs.js +6 -0
- package/dist/plugins/catalog/package.json.cjs.js.map +1 -0
- package/dist/plugins/catalog-backend/package.json.cjs.js +6 -0
- package/dist/plugins/catalog-backend/package.json.cjs.js.map +1 -0
- package/dist/plugins/catalog-backend-module-logs/package.json.cjs.js +6 -0
- package/dist/plugins/catalog-backend-module-logs/package.json.cjs.js.map +1 -0
- package/dist/plugins/catalog-backend-module-scaffolder-entity-model/package.json.cjs.js +6 -0
- package/dist/plugins/catalog-backend-module-scaffolder-entity-model/package.json.cjs.js.map +1 -0
- package/dist/plugins/catalog-common/package.json.cjs.js +6 -0
- package/dist/plugins/catalog-common/package.json.cjs.js.map +1 -0
- package/dist/plugins/catalog-graph/package.json.cjs.js +6 -0
- package/dist/plugins/catalog-graph/package.json.cjs.js.map +1 -0
- package/dist/plugins/catalog-import/package.json.cjs.js +6 -0
- package/dist/plugins/catalog-import/package.json.cjs.js.map +1 -0
- package/dist/plugins/catalog-react/package.json.cjs.js +6 -0
- package/dist/plugins/catalog-react/package.json.cjs.js.map +1 -0
- package/dist/plugins/kubernetes/package.json.cjs.js +6 -0
- package/dist/plugins/kubernetes/package.json.cjs.js.map +1 -0
- package/dist/plugins/kubernetes-backend/package.json.cjs.js +6 -0
- package/dist/plugins/kubernetes-backend/package.json.cjs.js.map +1 -0
- package/dist/plugins/org/package.json.cjs.js +6 -0
- package/dist/plugins/org/package.json.cjs.js.map +1 -0
- package/dist/plugins/permission-backend/package.json.cjs.js +6 -0
- package/dist/plugins/permission-backend/package.json.cjs.js.map +1 -0
- package/dist/plugins/permission-backend-module-policy-allow-all/package.json.cjs.js +6 -0
- package/dist/plugins/permission-backend-module-policy-allow-all/package.json.cjs.js.map +1 -0
- package/dist/plugins/permission-common/package.json.cjs.js +6 -0
- package/dist/plugins/permission-common/package.json.cjs.js.map +1 -0
- package/dist/plugins/permission-node/package.json.cjs.js +6 -0
- package/dist/plugins/permission-node/package.json.cjs.js.map +1 -0
- package/dist/plugins/permission-react/package.json.cjs.js +6 -0
- package/dist/plugins/permission-react/package.json.cjs.js.map +1 -0
- package/dist/plugins/proxy-backend/package.json.cjs.js +6 -0
- package/dist/plugins/proxy-backend/package.json.cjs.js.map +1 -0
- package/dist/plugins/scaffolder/package.json.cjs.js +6 -0
- package/dist/plugins/scaffolder/package.json.cjs.js.map +1 -0
- package/dist/plugins/scaffolder-backend/package.json.cjs.js +6 -0
- package/dist/plugins/scaffolder-backend/package.json.cjs.js.map +1 -0
- package/dist/plugins/search/package.json.cjs.js +6 -0
- package/dist/plugins/search/package.json.cjs.js.map +1 -0
- package/dist/plugins/search-backend/package.json.cjs.js +6 -0
- package/dist/plugins/search-backend/package.json.cjs.js.map +1 -0
- package/dist/plugins/search-backend-module-catalog/package.json.cjs.js +6 -0
- package/dist/plugins/search-backend-module-catalog/package.json.cjs.js.map +1 -0
- package/dist/plugins/search-backend-module-pg/package.json.cjs.js +6 -0
- package/dist/plugins/search-backend-module-pg/package.json.cjs.js.map +1 -0
- package/dist/plugins/search-backend-module-techdocs/package.json.cjs.js +6 -0
- package/dist/plugins/search-backend-module-techdocs/package.json.cjs.js.map +1 -0
- package/dist/plugins/search-backend-node/package.json.cjs.js +6 -0
- package/dist/plugins/search-backend-node/package.json.cjs.js.map +1 -0
- package/dist/plugins/search-react/package.json.cjs.js +6 -0
- package/dist/plugins/search-react/package.json.cjs.js.map +1 -0
- package/dist/plugins/techdocs/package.json.cjs.js +6 -0
- package/dist/plugins/techdocs/package.json.cjs.js.map +1 -0
- package/dist/plugins/techdocs-backend/package.json.cjs.js +6 -0
- package/dist/plugins/techdocs-backend/package.json.cjs.js.map +1 -0
- package/dist/plugins/techdocs-module-addons-contrib/package.json.cjs.js +6 -0
- package/dist/plugins/techdocs-module-addons-contrib/package.json.cjs.js.map +1 -0
- package/dist/plugins/techdocs-react/package.json.cjs.js +6 -0
- package/dist/plugins/techdocs-react/package.json.cjs.js.map +1 -0
- package/dist/plugins/user-settings/package.json.cjs.js +6 -0
- package/dist/plugins/user-settings/package.json.cjs.js.map +1 -0
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @backstage/create-app
|
|
2
2
|
|
|
3
|
+
## 0.5.21-next.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Bumped create-app version.
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
- @backstage/cli-common@0.1.14
|
|
10
|
+
|
|
11
|
+
## 0.5.21-next.1
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- Bumped create-app version.
|
|
16
|
+
- Updated dependencies
|
|
17
|
+
- @backstage/cli-common@0.1.14
|
|
18
|
+
|
|
3
19
|
## 0.5.21-next.0
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var chalk = require('chalk');
|
|
6
|
+
var inquirer = require('inquirer');
|
|
7
|
+
var path = require('path');
|
|
8
|
+
var cliCommon = require('@backstage/cli-common');
|
|
9
|
+
var os = require('os');
|
|
10
|
+
var fs = require('fs-extra');
|
|
11
|
+
var tasks = require('./lib/tasks.cjs.js');
|
|
12
|
+
|
|
13
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
14
|
+
|
|
15
|
+
var chalk__default = /*#__PURE__*/_interopDefaultCompat(chalk);
|
|
16
|
+
var inquirer__default = /*#__PURE__*/_interopDefaultCompat(inquirer);
|
|
17
|
+
var os__default = /*#__PURE__*/_interopDefaultCompat(os);
|
|
18
|
+
var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
|
|
19
|
+
|
|
20
|
+
const DEFAULT_BRANCH = "master";
|
|
21
|
+
var createApp = async (opts) => {
|
|
22
|
+
const paths = cliCommon.findPaths(__dirname);
|
|
23
|
+
const answers = await inquirer__default.default.prompt([
|
|
24
|
+
{
|
|
25
|
+
type: "input",
|
|
26
|
+
name: "name",
|
|
27
|
+
default: "backstage",
|
|
28
|
+
message: chalk__default.default.blue("Enter a name for the app [required]"),
|
|
29
|
+
validate: (value) => {
|
|
30
|
+
if (!value) {
|
|
31
|
+
return chalk__default.default.red("Please enter a name for the app");
|
|
32
|
+
} else if (!/^[a-z0-9]+(-[a-z0-9]+)*$/.test(value)) {
|
|
33
|
+
return chalk__default.default.red(
|
|
34
|
+
"App name must be lowercase and contain only letters, digits, and dashes."
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
return true;
|
|
38
|
+
},
|
|
39
|
+
when: (a) => {
|
|
40
|
+
const envName = process.env.BACKSTAGE_APP_NAME;
|
|
41
|
+
if (envName) {
|
|
42
|
+
a.name = envName;
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
]);
|
|
49
|
+
const templateDir = opts.templatePath ? paths.resolveTarget(opts.templatePath) : paths.resolveOwn("templates/default-app");
|
|
50
|
+
const appDir = opts.path ? path.resolve(paths.targetDir, opts.path) : path.resolve(paths.targetDir, answers.name);
|
|
51
|
+
tasks.Task.log();
|
|
52
|
+
tasks.Task.log("Creating the app...");
|
|
53
|
+
try {
|
|
54
|
+
const gitConfig = await tasks.readGitConfig();
|
|
55
|
+
if (opts.path) {
|
|
56
|
+
tasks.Task.section("Checking that supplied path exists");
|
|
57
|
+
await tasks.checkPathExistsTask(appDir);
|
|
58
|
+
tasks.Task.section("Preparing files");
|
|
59
|
+
await tasks.templatingTask(templateDir, opts.path, {
|
|
60
|
+
...answers,
|
|
61
|
+
defaultBranch: gitConfig?.defaultBranch ?? DEFAULT_BRANCH
|
|
62
|
+
});
|
|
63
|
+
} else {
|
|
64
|
+
tasks.Task.section("Checking if the directory is available");
|
|
65
|
+
await tasks.checkAppExistsTask(paths.targetDir, answers.name);
|
|
66
|
+
tasks.Task.section("Creating a temporary app directory");
|
|
67
|
+
const tempDir = await fs__default.default.mkdtemp(path.resolve(os__default.default.tmpdir(), answers.name));
|
|
68
|
+
tasks.Task.section("Preparing files");
|
|
69
|
+
await tasks.templatingTask(templateDir, tempDir, {
|
|
70
|
+
...answers,
|
|
71
|
+
defaultBranch: gitConfig?.defaultBranch ?? DEFAULT_BRANCH
|
|
72
|
+
});
|
|
73
|
+
tasks.Task.section("Moving to final location");
|
|
74
|
+
await tasks.moveAppTask(tempDir, appDir, answers.name);
|
|
75
|
+
}
|
|
76
|
+
const fetchedYarnLockSeed = await tasks.fetchYarnLockSeedTask(appDir);
|
|
77
|
+
if (gitConfig) {
|
|
78
|
+
if (await tasks.tryInitGitRepository(appDir)) {
|
|
79
|
+
tasks.Task.forItem("init", "git repository", async () => {
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (!opts.skipInstall) {
|
|
84
|
+
tasks.Task.section("Installing dependencies");
|
|
85
|
+
await tasks.buildAppTask(appDir);
|
|
86
|
+
}
|
|
87
|
+
tasks.Task.log();
|
|
88
|
+
tasks.Task.log(
|
|
89
|
+
chalk__default.default.green(`\u{1F947} Successfully created ${chalk__default.default.cyan(answers.name)}`)
|
|
90
|
+
);
|
|
91
|
+
tasks.Task.log();
|
|
92
|
+
if (!fetchedYarnLockSeed) {
|
|
93
|
+
tasks.Task.log(
|
|
94
|
+
chalk__default.default.yellow(
|
|
95
|
+
[
|
|
96
|
+
"Warning: Failed to fetch the yarn.lock seed file.",
|
|
97
|
+
" You may end up with incompatible dependencies that break the app.",
|
|
98
|
+
" If you run into any errors, please search the issues at",
|
|
99
|
+
" https://github.com/backstage/backstage/issues for potential solutions"
|
|
100
|
+
].join("\n")
|
|
101
|
+
)
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
tasks.Task.section("All set! Now you might want to");
|
|
105
|
+
if (opts.skipInstall) {
|
|
106
|
+
tasks.Task.log(
|
|
107
|
+
` Install the dependencies: ${chalk__default.default.cyan(
|
|
108
|
+
`cd ${opts.path ?? answers.name} && yarn install`
|
|
109
|
+
)}`
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
tasks.Task.log(
|
|
113
|
+
` Run the app: ${chalk__default.default.cyan(
|
|
114
|
+
`cd ${opts.path ?? answers.name} && yarn dev`
|
|
115
|
+
)}`
|
|
116
|
+
);
|
|
117
|
+
tasks.Task.log(
|
|
118
|
+
" Set up the software catalog: https://backstage.io/docs/features/software-catalog/configuration"
|
|
119
|
+
);
|
|
120
|
+
tasks.Task.log(" Add authentication: https://backstage.io/docs/auth/");
|
|
121
|
+
tasks.Task.log();
|
|
122
|
+
tasks.Task.exit();
|
|
123
|
+
} catch (error) {
|
|
124
|
+
tasks.Task.error(String(error));
|
|
125
|
+
tasks.Task.log("It seems that something went wrong when creating the app \u{1F914}");
|
|
126
|
+
tasks.Task.error("\u{1F525} Failed to create app!");
|
|
127
|
+
tasks.Task.exit(1);
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
exports.default = createApp;
|
|
132
|
+
//# sourceMappingURL=createApp.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createApp.cjs.js","sources":["../src/createApp.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 chalk from 'chalk';\nimport { OptionValues } from 'commander';\nimport inquirer, { Answers } from 'inquirer';\nimport { resolve as resolvePath } from 'path';\nimport { findPaths } from '@backstage/cli-common';\nimport os from 'os';\nimport fs from 'fs-extra';\nimport {\n Task,\n buildAppTask,\n checkAppExistsTask,\n checkPathExistsTask,\n moveAppTask,\n templatingTask,\n tryInitGitRepository,\n readGitConfig,\n fetchYarnLockSeedTask,\n} from './lib/tasks';\n\nconst DEFAULT_BRANCH = 'master';\n\nexport default async (opts: OptionValues): Promise<void> => {\n /* eslint-disable-next-line no-restricted-syntax */\n const paths = findPaths(__dirname);\n const answers: Answers = await inquirer.prompt([\n {\n type: 'input',\n name: 'name',\n default: 'backstage',\n message: chalk.blue('Enter a name for the app [required]'),\n validate: (value: any) => {\n if (!value) {\n return chalk.red('Please enter a name for the app');\n } else if (!/^[a-z0-9]+(-[a-z0-9]+)*$/.test(value)) {\n return chalk.red(\n 'App name must be lowercase and contain only letters, digits, and dashes.',\n );\n }\n return true;\n },\n when: (a: Answers) => {\n const envName = process.env.BACKSTAGE_APP_NAME;\n if (envName) {\n a.name = envName;\n return false;\n }\n return true;\n },\n },\n ]);\n\n const templateDir = opts.templatePath\n ? paths.resolveTarget(opts.templatePath)\n : paths.resolveOwn('templates/default-app');\n\n // Use `--path` argument as application directory when specified, otherwise\n // create a directory using `answers.name`\n const appDir = opts.path\n ? resolvePath(paths.targetDir, opts.path)\n : resolvePath(paths.targetDir, answers.name);\n\n Task.log();\n Task.log('Creating the app...');\n\n try {\n const gitConfig = await readGitConfig();\n\n if (opts.path) {\n // Template directly to specified path\n\n Task.section('Checking that supplied path exists');\n await checkPathExistsTask(appDir);\n\n Task.section('Preparing files');\n await templatingTask(templateDir, opts.path, {\n ...answers,\n defaultBranch: gitConfig?.defaultBranch ?? DEFAULT_BRANCH,\n });\n } else {\n // Template to temporary location, and then move files\n\n Task.section('Checking if the directory is available');\n await checkAppExistsTask(paths.targetDir, answers.name);\n\n Task.section('Creating a temporary app directory');\n const tempDir = await fs.mkdtemp(resolvePath(os.tmpdir(), answers.name));\n\n Task.section('Preparing files');\n await templatingTask(templateDir, tempDir, {\n ...answers,\n defaultBranch: gitConfig?.defaultBranch ?? DEFAULT_BRANCH,\n });\n\n Task.section('Moving to final location');\n await moveAppTask(tempDir, appDir, answers.name);\n }\n\n const fetchedYarnLockSeed = await fetchYarnLockSeedTask(appDir);\n\n if (gitConfig) {\n if (await tryInitGitRepository(appDir)) {\n // Since we don't know whether we were able to init git before we\n // try, we can't track the actual task execution\n Task.forItem('init', 'git repository', async () => {});\n }\n }\n\n if (!opts.skipInstall) {\n Task.section('Installing dependencies');\n await buildAppTask(appDir);\n }\n\n Task.log();\n Task.log(\n chalk.green(`🥇 Successfully created ${chalk.cyan(answers.name)}`),\n );\n Task.log();\n\n if (!fetchedYarnLockSeed) {\n Task.log(\n chalk.yellow(\n [\n 'Warning: Failed to fetch the yarn.lock seed file.',\n ' You may end up with incompatible dependencies that break the app.',\n ' If you run into any errors, please search the issues at',\n ' https://github.com/backstage/backstage/issues for potential solutions',\n ].join('\\n'),\n ),\n );\n }\n\n Task.section('All set! Now you might want to');\n if (opts.skipInstall) {\n Task.log(\n ` Install the dependencies: ${chalk.cyan(\n `cd ${opts.path ?? answers.name} && yarn install`,\n )}`,\n );\n }\n Task.log(\n ` Run the app: ${chalk.cyan(\n `cd ${opts.path ?? answers.name} && yarn dev`,\n )}`,\n );\n Task.log(\n ' Set up the software catalog: https://backstage.io/docs/features/software-catalog/configuration',\n );\n Task.log(' Add authentication: https://backstage.io/docs/auth/');\n Task.log();\n Task.exit();\n } catch (error) {\n Task.error(String(error));\n\n Task.log('It seems that something went wrong when creating the app 🤔');\n\n Task.error('🔥 Failed to create app!');\n Task.exit(1);\n }\n};\n"],"names":["findPaths","inquirer","chalk","resolvePath","Task","readGitConfig","checkPathExistsTask","templatingTask","checkAppExistsTask","fs","os","moveAppTask","fetchYarnLockSeedTask","tryInitGitRepository","buildAppTask"],"mappings":"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"}
|