backstage-cli: add config:schema command.

Signed-off-by: Andreas Stenius <git@astekk.se>
This commit is contained in:
Andreas Stenius
2021-02-17 12:14:07 +01:00
parent 2d8e78ed4c
commit d4f0a14060
4 changed files with 53 additions and 2 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/cli': minor
---
New config command to export the configuration schema. When running backstage-cli with yarn, consider using `yarn --silent backstage-cli config:schema` to get a clean output on `stdout`.
@@ -0,0 +1,35 @@
/*
* Copyright 2021 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 { Command } from 'commander';
import { stringify as stringifyYaml } from 'yaml';
import { loadCliConfig } from '../../lib/config';
export default async (cmd: Command) => {
const { schema } = await loadCliConfig({
args: [],
fromPackage: cmd.package,
mockEnv: true,
});
const data = schema.serialize();
if (cmd.format === 'json') {
process.stdout.write(`${JSON.stringify(data, null, 2)}\n`);
} else {
process.stdout.write(`${stringifyYaml(data)}\n`);
}
};
+9
View File
@@ -177,6 +177,15 @@ export function registerCommands(program: CommanderStatic) {
)
.action(lazy(() => import('./config/validate').then(m => m.default)));
program
.command('config:schema')
.option(
'--package <name>',
'Only output config schema that applies to the given package',
)
.description('Print configuration schema')
.action(lazy(() => import('./config/schema').then(m => m.default)));
program
.command('versions:bump')
.description('Bump Backstage packages to the latest versions')
+4 -2
View File
@@ -48,8 +48,10 @@ export async function loadCliConfig(options: Options) {
configPaths,
});
console.log(
`Loaded config from ${appConfigs.map(c => c.context).join(', ')}`,
// printing to stderr to not clobber stdout in case the cli command
// outputs structured data (e.g. as config:schema does)
process.stderr.write(
`Loaded config from ${appConfigs.map(c => c.context).join(', ')}\n`,
);
try {