From 069aa1689efff9bfa8b591487349572330cee196 Mon Sep 17 00:00:00 2001 From: Florian Wilhelm Date: Fri, 17 Jun 2022 13:24:59 +0200 Subject: [PATCH] Deprecate `versionInPackageJson` parameter (#2572) Closes SAP/cloud-sdk-backlog#161. Co-authored-by: Florian Richter Co-authored-by: Marika Marszalkowski <868536+marikaner@users.noreply.github.com> --- .changeset/angry-llamas-juggle.md | 5 ++++ .changeset/late-buses-breathe.md | 5 ++++ .changeset/tender-fireants-stare.md | 5 ++++ packages/generator/src/generator-options.ts | 27 +++++++++++++++---- packages/generator/src/generator.spec.ts | 4 +-- packages/generator/src/generator.ts | 13 ++++----- test-packages/e2e-tests/README.md | 2 +- .../e2e-tests/test/generator-cli.spec.ts | 19 +++++++++++++ .../test/odata-negative-case.spec.ts | 2 +- 9 files changed, 65 insertions(+), 17 deletions(-) create mode 100644 .changeset/angry-llamas-juggle.md create mode 100644 .changeset/late-buses-breathe.md create mode 100644 .changeset/tender-fireants-stare.md diff --git a/.changeset/angry-llamas-juggle.md b/.changeset/angry-llamas-juggle.md new file mode 100644 index 0000000000..03149eacf4 --- /dev/null +++ b/.changeset/angry-llamas-juggle.md @@ -0,0 +1,5 @@ +--- +'@sap-cloud-sdk/generator': minor +--- + +[Compatibility Note] Deprecate generator option `versionInPackageJson`. If you need to set the version, use the new `include` option to add your own `package.json` file instead. diff --git a/.changeset/late-buses-breathe.md b/.changeset/late-buses-breathe.md new file mode 100644 index 0000000000..958f34ca6d --- /dev/null +++ b/.changeset/late-buses-breathe.md @@ -0,0 +1,5 @@ +--- +'@sap-cloud-sdk/generator': minor +--- + +[Compatibility Note] The hidden generator option `additionalFiles` is renamed to `include`. diff --git a/.changeset/tender-fireants-stare.md b/.changeset/tender-fireants-stare.md new file mode 100644 index 0000000000..5f80c057bd --- /dev/null +++ b/.changeset/tender-fireants-stare.md @@ -0,0 +1,5 @@ +--- +'@sap-cloud-sdk/generator': minor +--- + +[New Functionality] New generator option `include` which allows to add files to generated packages. diff --git a/packages/generator/src/generator-options.ts b/packages/generator/src/generator-options.ts index 4aa5fb6e19..0a5a893d9a 100755 --- a/packages/generator/src/generator-options.ts +++ b/packages/generator/src/generator-options.ts @@ -1,6 +1,9 @@ import { PathLike } from 'fs'; import { resolve } from 'path'; import { Options } from 'yargs'; +import { createLogger } from '@sap-cloud-sdk/util'; + +const logger = createLogger('generator-options'); /** * Options that can be used to configure the generation when using the generator programmatically. @@ -11,7 +14,7 @@ export interface GeneratorOptions { serviceMapping?: PathLike; useSwagger: boolean; writeReadme: boolean; - additionalFiles?: string; + include?: string; forceOverwrite: boolean; clearOutputDir: boolean; generateNpmrc: boolean; @@ -24,6 +27,7 @@ export interface GeneratorOptions { sdkAfterVersionScript: boolean; s4hanaCloud: boolean; generateCSN: boolean; + packageVersion?: string; } /** * @internal @@ -83,13 +87,12 @@ export const generatorOptionsCli: KeysToOptions = { default: false, hidden: true }, - additionalFiles: { + include: { describe: 'Glob describing additional files to be added to the each generated service directory - relative to the inputDir.', type: 'string', coerce: coercePathArg, - normalize: true, - hidden: true + normalize: true }, forceOverwrite: { describe: @@ -118,7 +121,15 @@ export const generatorOptionsCli: KeysToOptions = { versionInPackageJson: { describe: 'By default, when generating package.json file, the generator will set a version by using the generator version. It can also be set to a specific version.', - type: 'string' + type: 'string', + deprecated: + "Since v2.6.0. Use the 'include' option to add your own package.json file instead.", + coerce: (input: string): string => { + logger.warn( + "The option 'versionInPackageJson' is deprecated since v2.6.0. Use the 'include' option to add your own package.json file instead." + ); + return input; + } }, licenseInPackageJson: { describe: @@ -151,6 +162,12 @@ export const generatorOptionsCli: KeysToOptions = { default: false, hidden: true }, + packageVersion: { + describe: 'Version of the generated package.', + type: 'string', + default: '1.0.0', + hidden: true + }, s4hanaCloud: { describe: 'When set to true, the description of the generated packages will be specific to S/4HANA Cloud.', diff --git a/packages/generator/src/generator.spec.ts b/packages/generator/src/generator.spec.ts index 9c31489dc2..379ad2df1e 100755 --- a/packages/generator/src/generator.spec.ts +++ b/packages/generator/src/generator.spec.ts @@ -40,7 +40,7 @@ describe('generator', () => { inputDir: pathTestService, outputDir: outPutPath, forceOverwrite: true, - additionalFiles: '../../../*.md' + include: '../../../*.md' }) ); @@ -202,7 +202,7 @@ describe('generator', () => { outputDir: outPutPath, forceOverwrite: true, generateJs: true, - additionalFiles: '../../../*.md' + include: '../../../*.md' }) ); diff --git a/packages/generator/src/generator.ts b/packages/generator/src/generator.ts index bd36f42899..b82b063c79 100755 --- a/packages/generator/src/generator.ts +++ b/packages/generator/src/generator.ts @@ -191,24 +191,21 @@ async function generateFilesWithoutTsMorph( const promises = services.flatMap(service => [ generateEntityApis(service, options), generateServiceFile(service, options), - generateAdditionalFiles(service, options) + generateIncludes(service, options) ]); await Promise.all(promises); } -async function generateAdditionalFiles( +async function generateIncludes( service: VdmServiceMetadata, options: GeneratorOptions ): Promise { - if (options.additionalFiles) { - const additionalFilesDir = resolve( - options.inputDir.toString(), - options.additionalFiles - ) + if (options.include) { + const includeDir = resolve(options.inputDir.toString(), options.include) .split(sep) .join(posix.sep); const serviceDir = resolvePath(service.directoryName, options); - const files = new GlobSync(additionalFilesDir).found; + const files = new GlobSync(includeDir).found; await copyFiles(files, serviceDir, options.forceOverwrite); } } diff --git a/test-packages/e2e-tests/README.md b/test-packages/e2e-tests/README.md index 546fe7f78f..3f8ba65f58 100755 --- a/test-packages/e2e-tests/README.md +++ b/test-packages/e2e-tests/README.md @@ -10,6 +10,6 @@ For testing if two versions works together do the following in the e2e folder: ```bash rm -r node_modules/ && yarn install --ignore-engines //contains state of pm2 -rm -r sqlite.db && yarn deploy && yarn stop && yarn start //recreate DB +rm sqlite.db && yarn deploy && yarn stop && yarn start //recreate DB //execute your tests ``` diff --git a/test-packages/e2e-tests/test/generator-cli.spec.ts b/test-packages/e2e-tests/test/generator-cli.spec.ts index 4fafab202b..1ab1b7b214 100755 --- a/test-packages/e2e-tests/test/generator-cli.spec.ts +++ b/test-packages/e2e-tests/test/generator-cli.spec.ts @@ -60,4 +60,23 @@ describe('generator-cli', () => { expect(entities).toContain('TestEntity.ts'); expect(entities).toContain('package.json'); }, 60000); + + it('should set version when versionInPackageJson option is used', async () => { + const process = await execa('npx', [ + 'ts-node', + pathToGenerator, + '-c', + path.resolve(__dirname, 'generator.config.json'), + '--versionInPackageJson=42.23' + ]); + + const actualPackageJson = JSON.parse( + fs.readFileSync(`${outputDir}/test-service/package.json`).toString() + ); + expect(actualPackageJson.version).toEqual('42.23'); + + expect(process.stdout).toMatch( + /The option 'versionInPackageJson' is deprecated since v2.6.0./ + ); + }, 60000); }); diff --git a/test-packages/integration-tests/test/odata-negative-case.spec.ts b/test-packages/integration-tests/test/odata-negative-case.spec.ts index 0e271123f8..e5faeb3474 100755 --- a/test-packages/integration-tests/test/odata-negative-case.spec.ts +++ b/test-packages/integration-tests/test/odata-negative-case.spec.ts @@ -58,7 +58,7 @@ describe('odata negative tests', () => { ), '-o', join(testDir, 'faulty-typescript'), - '--additionalFiles', + '--include', resolve( testResourcesDir, 'faulty-typescript',