Merge pull request #24810 from nurbaysymbat/nurbaysymbat/repo-tools-additional-props

repo-tools: add additional properties to generate command
This commit is contained in:
Ben Lambert
2024-05-27 14:14:30 +02:00
committed by GitHub
4 changed files with 23 additions and 4 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/repo-tools': patch
---
Add `--client-additional-properties` option to `openapi generate` command
@@ -54,6 +54,10 @@ function registerPackageCommand(program: Command) {
.description(
'Command to generate a client and/or a server stub from an OpenAPI spec.',
)
.option('--client-additional-properties [properties]')
.description(
'Additional properties that can be passed to @openapitools/openapi-generator-cli',
)
.action(
lazy(() =>
import('./package/schema/openapi/generate').then(m => m.command),
@@ -27,12 +27,18 @@ import { exec } from '../../../../../lib/exec';
import { resolvePackagePath } from '@backstage/backend-plugin-api';
import { getPathToCurrentOpenApiSpec } from '../../../../../lib/openapi/helpers';
async function generate(outputDirectory: string) {
async function generate(
outputDirectory: string,
clientAdditionalProperties?: string,
) {
const resolvedOpenapiPath = await getPathToCurrentOpenApiSpec();
const resolvedOutputDirectory = cliPaths.resolveTargetRoot(
outputDirectory,
OUTPUT_PATH,
);
const additionalProperties = clientAdditionalProperties
? `--additional-properties=${clientAdditionalProperties}`
: '';
mkdirpSync(resolvedOutputDirectory);
await fs.mkdirp(resolvedOutputDirectory);
@@ -60,6 +66,7 @@ async function generate(outputDirectory: string) {
),
'--generator-key',
'v3.0',
additionalProperties,
],
{
maxBuffer: Number.MAX_VALUE,
@@ -87,9 +94,12 @@ async function generate(outputDirectory: string) {
});
}
export async function command(outputPackage: string): Promise<void> {
export async function command(
outputPackage: string,
clientAdditionalProperties?: string,
): Promise<void> {
try {
await generate(outputPackage);
await generate(outputPackage, clientAdditionalProperties);
console.log(
chalk.green(`Generated client in ${outputPackage}/${OUTPUT_PATH}`),
);
@@ -26,7 +26,7 @@ export async function command(opts: OptionValues) {
process.exit(1);
}
if (opts.clientPackage) {
await generateClient(opts.clientPackage);
await generateClient(opts.clientPackage, opts.clientAdditionalProperties);
}
if (opts.server) {
await generateServer();