Skip to content

Commander adapter doesn't intercept complete -- when using parseAsync() #120

@techzealot

Description

@techzealot

The Commander.js adapter overrides program.parse() to intercept complete --
requests, but does not override program.parseAsync(). When using async action
handlers (which require parseAsync()), the completion protocol is never
intercepted

Reproduction

import { Command } from 'commander'
import tab from '@bomb.sh/tab/commander'

const program = new Command('my-cli')

program
  .command('greet')
  .description('Say hello')
  .action(async (name) => {  // async handler requires parseAsync()
    console.log(`Hello, ${name}!`)
  })

const completion = tab(program)

// This works (adapter intercepts):
// program.parse()

// This does NOT work (adapter doesn't intercept):
await program.parseAsync()

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions