From e5f113bb2660d86de1bdfb25bdf7271452f5aa6a Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Thu, 13 Oct 2022 09:10:30 -0600 Subject: [PATCH 1/2] feat: support flag aliases --- src/config/config.ts | 2 ++ src/interfaces/parser.ts | 4 ++++ src/parser/parse.ts | 9 +++++++++ test/parser/parse.test.ts | 24 ++++++++++++++++++++++++ 4 files changed, 39 insertions(+) diff --git a/src/config/config.ts b/src/config/config.ts index 3d032b87..afbc99d4 100644 --- a/src/config/config.ts +++ b/src/config/config.ts @@ -752,6 +752,7 @@ export async function toCached(c: Command.Class, plugin?: IPlugin): Promise } + private readonly flagAliases: { [k: string]: BooleanFlag | OptionFlag } private readonly context: any @@ -52,6 +53,10 @@ export class Parser f.type === 'boolean') as any + this.flagAliases = Object.fromEntries(Object.values(input.flags).flatMap(flag => { + return (flag.aliases ?? []).map(a => [a, flag]) + })) + this.metaData = {} } @@ -64,6 +69,10 @@ export class Parser { + it('works with defined name', async () => { + const out = await parse(['--foo'], { + flags: { + foo: flags.boolean({ + aliases: ['bar'], + }), + }, + }) + expect(out.flags.foo).to.equal(true) + }) + + it('works with aliased name', async () => { + const out = await parse(['--bar'], { + flags: { + foo: flags.boolean({ + aliases: ['bar'], + }), + }, + }) + expect(out.flags.foo).to.equal(true) + }) + }) }) From 5c7b0a5d866be06160aa435ad481bc9770b311c7 Mon Sep 17 00:00:00 2001 From: Mike Donnalley Date: Thu, 13 Oct 2022 11:46:50 -0600 Subject: [PATCH 2/2] chore: fix e2e tests --- test/integration/plugins.e2e.ts | 8 ++++---- test/integration/util.ts | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/test/integration/plugins.e2e.ts b/test/integration/plugins.e2e.ts index 33131992..5ae240f9 100644 --- a/test/integration/plugins.e2e.ts +++ b/test/integration/plugins.e2e.ts @@ -193,7 +193,7 @@ describe('oclif plugins', () => { describe('installing a plugin by name', () => { it('should install the plugin', async () => { - const result = await executor.executeCommand('plugins:install @oclif/plugin-warn-if-update-available') + const result = await executor.executeCommand('plugins:install @oclif/plugin-warn-if-update-available 2>&1') expect(result.code).to.equal(0) expect(result.output).to.include('@oclif/plugin-warn-if-update-available... installed v') @@ -205,7 +205,7 @@ describe('oclif plugins', () => { describe('installing a plugin by github url', () => { after(async () => { - await executor.executeCommand('plugins:uninstall @oclif/plugin-warn-if-update-available') + await executor.executeCommand('plugins:uninstall @oclif/plugin-warn-if-update-available 2>&1') }) it('should install the plugin', async () => { @@ -220,7 +220,7 @@ describe('oclif plugins', () => { describe('forcefully installing a plugin', () => { it('should install the plugin', async () => { - const result = await executor.executeCommand('plugins:install @oclif/plugin-warn-if-update-available --force') + const result = await executor.executeCommand('plugins:install @oclif/plugin-warn-if-update-available --force 2>&1') expect(result.code).to.equal(0) expect(result.output).to.include('@oclif/plugin-warn-if-update-available... installed v') @@ -236,7 +236,7 @@ describe('oclif plugins', () => { }) it('should uninstall the plugin', async () => { - const result = await executor.executeCommand('plugins:uninstall @oclif/plugin-warn-if-update-available') + const result = await executor.executeCommand('plugins:uninstall @oclif/plugin-warn-if-update-available 2>&1') expect(result.code).to.equal(0) expect(result.output).to.include('success Uninstalled packages.Uninstalling @oclif/plugin-warn-if-update-available... done\n') diff --git a/test/integration/util.ts b/test/integration/util.ts index 7292b21b..f7f7a053 100644 --- a/test/integration/util.ts +++ b/test/integration/util.ts @@ -39,7 +39,7 @@ export class Executor { public executeCommand(cmd: string): Promise { const executable = process.platform === 'win32' ? path.join('bin', 'run.cmd') : path.join('bin', 'run') - return this.executeInTestDir(`${executable} ${cmd} 2>&1`) + return this.executeInTestDir(`${executable} ${cmd}`) } public exec(cmd: string, cwd = process.cwd(), silent = true): Promise {