Command CLI Arguments

The same way as with a CLI application with a single command, subcommands (or just "commands") can also have their own CLI arguments:

import typer

app = typer.Typer()


@app.command()
def create(username: str):
    typer.echo(f"Creating user: {username}")


@app.command()
def delete(username: str):
    typer.echo(f"Deleting user: {username}")


if __name__ == "__main__":
    app()
// Check the help for create
$ python main.py create --help

Usage: main.py create [OPTIONS] USERNAME

Options:
  --help  Show this message and exit.

// Call it with a CLI argument
$ python main.py create Camila

Creating user: Camila

// The same for delete
$ python main.py delete Camila

Deleting user: Camila

Tip

Everything to the right of the command are CLI parameters (CLI arguments and CLI options) for that command.

Technical Details

Actually, it's everything to the right of that command, before any subcommand.

It's possible to have groups of subcommands, it's like if one command also had subcommands. And then those subcommands could have their own CLI parameters, taking their own CLI parameters.

You will see about them later in another section.