feat(create-app): requested changes

This commit is contained in:
Rémi DOREAU
2020-07-30 01:08:07 +02:00
parent 5eb1f2d69f
commit 489a57b0c7
46 changed files with 59 additions and 44 deletions
+1 -1
View File
@@ -15,7 +15,7 @@ To create a Backstage app, you will need to have
With `npx`:
```bash
npx @backstage/cli create-app
npx @backstage/create-app
```
This will create a new Backstage App inside the current folder. The name of the
+1 -2
View File
@@ -107,8 +107,7 @@ async function createApp(appName, isPostgres, workspaceDir, rootDir) {
const child = spawnPiped(
[
'node',
resolvePath(workspaceDir, 'packages/cli/bin/backstage-cli'),
'create-app',
resolvePath(workspaceDir, 'packages/cli/bin/backstage-create-app'),
'--skip-install',
],
{
@@ -1,9 +0,0 @@
import { createPlugin } from '@backstage/core';
import WelcomePage from './components/WelcomePage';
export const plugin = createPlugin({
id: 'welcome',
register({ router }) {
router.registerRoute('/', WelcomePage);
},
});
+2 -8
View File
@@ -5,16 +5,10 @@ You can use the flag `--skip-install` to skip the install.
## Installation
Install the package via npm or yarn:
With `npx`:
```sh
$ npm install --save @backstage/create-app
```
or
```sh
$ yarn add @backstage/create-app
$ npx @backstage/create-app
```
## Documentation
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@backstage/create-app",
"description": "Create app package for Backstage",
"version": "0.1.1",
"version": "0.1.1-alpha.12",
"private": false,
"publishConfig": {
"access": "public"
+1 -1
View File
@@ -116,7 +116,7 @@ export default async (cmd: Command): Promise<void> => {
answers.dbTypePG = answers.dbType === 'PostgreSQL';
answers.dbTypeSqlite = answers.dbType === 'SQLite';
const templateDir = paths.resolveOwnRoot('packages/cli/templates/default-app');
const templateDir = paths.resolveOwn('templates/default-app');
const tempDir = resolvePath(os.tmpdir(), answers.name);
const appDir = resolvePath(paths.targetDir, answers.name);
+2 -22
View File
@@ -18,6 +18,7 @@ import program from 'commander';
import chalk from 'chalk';
import { exitWithError } from './lib/errors';
import { version } from './lib/version';
import createApp from './createApp';
const main = (argv: string[]) => {
program.name('backstage-create-app').version(version);
@@ -28,9 +29,7 @@ const main = (argv: string[]) => {
'--skip-install',
'Skip the install and builds steps after creating the app',
)
.action(
lazyAction(() => import('./createApp'), 'default'),
);
.action(createApp)
if (!process.argv.slice(2).length) {
program.outputHelp(chalk.yellow);
@@ -39,25 +38,6 @@ const main = (argv: string[]) => {
program.parse(argv);
};
// Wraps an action function so that it always exits and handles errors
function lazyAction<T extends readonly any[], Export extends string>(
actionRequireFunc: () => Promise<
{ [name in Export]: (...args: T) => Promise<any> }
>,
exportName: Export,
): (...args: T) => Promise<never> {
return async (...args: T) => {
try {
const module = await actionRequireFunc();
const actionFunc = module[exportName];
await actionFunc(...args);
process.exit(0);
} catch (error) {
exitWithError(error);
}
};
}
process.on('unhandledRejection', rejection => {
if (rejection instanceof Error) {
exitWithError(rejection);

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

@@ -0,0 +1,24 @@
/*
* Copyright 2020 Spotify AB
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { createPlugin } from '@backstage/core';
import WelcomePage from './components/WelcomePage';
export const plugin = createPlugin({
id: 'welcome',
register({ router }) {
router.registerRoute('/', WelcomePage);
},
});
@@ -0,0 +1,27 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="Backstage is an open platform for building developer portals"
/>
<title>Backstage</title>
</head>
<body style="margin: 0">
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<!--
This HTML file is a template.
If you open it directly in the browser, you will see an empty page.
You can add webfonts, meta tags, or analytics to this file.
The build step will place the bundled scripts into the <body> tag.
To begin the development, run `npm start` or `yarn start`.
To create a production bundle, use `npm run build` or `yarn build`.
-->
</body>
</html>