From 53a4a8b2b231b7c7794d6a7fc6e668b26a57a0a7 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 20 Jun 2026 21:30:30 +0800 Subject: [PATCH 1/4] chore(fix): sort rows in list command --- .../controllers/version-manager.controller.ts | 50 ++++++++++--------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/apps/generator-cli/src/app/controllers/version-manager.controller.ts b/apps/generator-cli/src/app/controllers/version-manager.controller.ts index aea4e5d6bb0..e5c652600b5 100644 --- a/apps/generator-cli/src/app/controllers/version-manager.controller.ts +++ b/apps/generator-cli/src/app/controllers/version-manager.controller.ts @@ -95,30 +95,34 @@ export class VersionManagerController { ); }; - private table = (versions: Version[]) => - this.ui.table({ + private table = (versions: Version[]) => { + // Keep row order identical to the order returned in versions. + const rows = versions.map((version) => { + const stable = version.versionTags.includes('stable'); + const selected = this.service.isSelectedVersion(version.version); + const versionTags = version.versionTags.map((t) => + t === 'latest' ? chalk.green(t) : t, + ); + + return { + value: version, + short: version.version, + row: { + '☐': selected ? '☒' : '☐', + releasedAt: version.releaseDate.toISOString().split('T')[0], + version: stable + ? chalk.yellow(version.version) + : chalk.gray(version.version), + installed: version.installed ? chalk.green('yes') : chalk.red('no'), + versionTags: versionTags.join(' '), + }, + }; + }); + + return this.ui.table({ printColNum: false, message: 'The following releases are available:', - rows: versions.map((version) => { - const stable = version.versionTags.includes('stable'); - const selected = this.service.isSelectedVersion(version.version); - const versionTags = version.versionTags.map((t) => - t === 'latest' ? chalk.green(t) : t, - ); - - return { - value: version, - short: version.version, - row: { - '☐': selected ? '☒' : '☐', - releasedAt: version.releaseDate.toISOString().split('T')[0], - version: stable - ? chalk.yellow(version.version) - : chalk.gray(version.version), - installed: version.installed ? chalk.green('yes') : chalk.red('no'), - versionTags: versionTags.join(' '), - }, - }; - }), + rows, }); + }; } From 6f42a6704548c5bdf29aa0d8a04ee846f1cb30c7 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 20 Jun 2026 21:35:42 +0800 Subject: [PATCH 2/4] chore(test): test list command --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 00d2944aeca..961fcbeb2aa 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -79,6 +79,7 @@ jobs: npm run oa help npm run oa help generate npm run oa version-manager help + npm run oa version-manager list npm run oa generate -- -g ruby -i https://raw.githubusercontent.com/OpenAPITools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml -o $GITHUB_WORKSPACE/tmp/ruby-client (npm run oa version-manager set 3.0.0 && npm run oa version | grep -q '3.0.0') || exit 1 (npm run oa version-manager set 6.0 && npm run oa version | grep -q '6.0.1') || exit 1 From 5001428f74da833dad982b2636eca1641617a7f2 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 20 Jun 2026 22:04:19 +0800 Subject: [PATCH 3/4] chore(test): list command --- .github/workflows/build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 961fcbeb2aa..00d2944aeca 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -79,7 +79,6 @@ jobs: npm run oa help npm run oa help generate npm run oa version-manager help - npm run oa version-manager list npm run oa generate -- -g ruby -i https://raw.githubusercontent.com/OpenAPITools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml -o $GITHUB_WORKSPACE/tmp/ruby-client (npm run oa version-manager set 3.0.0 && npm run oa version | grep -q '3.0.0') || exit 1 (npm run oa version-manager set 6.0 && npm run oa version | grep -q '6.0.1') || exit 1 From 4f92c2e26ddd9f0fe7c1f1400dd48ad34e7ca644 Mon Sep 17 00:00:00 2001 From: William Cheng Date: Sat, 20 Jun 2026 22:28:06 +0800 Subject: [PATCH 4/4] chore(fix): list command --- .../src/app/services/version-manager.service.spec.ts | 10 +++++----- .../src/app/services/version-manager.service.ts | 6 +++++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/apps/generator-cli/src/app/services/version-manager.service.spec.ts b/apps/generator-cli/src/app/services/version-manager.service.spec.ts index 58a00ffc246..69783ee524d 100644 --- a/apps/generator-cli/src/app/services/version-manager.service.spec.ts +++ b/apps/generator-cli/src/app/services/version-manager.service.spec.ts @@ -189,10 +189,10 @@ describe('VersionManagerService', () => { it('returns all versions', () => { expect(returnValue).toEqual([ - expectedVersions['4.2.0'], + expectedVersions['5.0.0-beta2'], expectedVersions['5.0.0-beta'], expectedVersions['4.3.1'], - expectedVersions['5.0.0-beta2'], + expectedVersions['4.2.0'], expectedVersions['3.0.0-alpha'], ]); }); @@ -201,15 +201,15 @@ describe('VersionManagerService', () => { describe.each([ [ ['beta'], - [expectedVersions['5.0.0-beta'], expectedVersions['5.0.0-beta2']], + [expectedVersions['5.0.0-beta2'], expectedVersions['5.0.0-beta']], ], [['beta', 'alpha'], []], [ ['5'], - [expectedVersions['5.0.0-beta'], expectedVersions['5.0.0-beta2']], + [expectedVersions['5.0.0-beta2'], expectedVersions['5.0.0-beta']], ], [['4.2'], [expectedVersions['4.2.0']]], - [['stable'], [expectedVersions['4.2.0'], expectedVersions['4.3.1']]], + [['stable'], [expectedVersions['4.3.1'], expectedVersions['4.2.0']]], ])('using tags %s', (tags, expectation) => { beforeEach(async () => { returnValue = await fixture.search(tags).toPromise(); diff --git a/apps/generator-cli/src/app/services/version-manager.service.ts b/apps/generator-cli/src/app/services/version-manager.service.ts index 03c704342d6..b80448a9783 100644 --- a/apps/generator-cli/src/app/services/version-manager.service.ts +++ b/apps/generator-cli/src/app/services/version-manager.service.ts @@ -103,7 +103,11 @@ export class VersionManagerService { search(tags: string[]) { return this.getAll().pipe( - map((versions) => this.filterVersionsByTags(versions, tags)) + map((versions) => + [...this.filterVersionsByTags(versions, tags)].sort((l, r) => + compareVersions(r.version, l.version), + ), + ) ); }