Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for typer applications #51

Open
sbordeynemics opened this issue Aug 27, 2021 · 1 comment
Open

Add support for typer applications #51

sbordeynemics opened this issue Aug 27, 2021 · 1 comment

Comments

@sbordeynemics
Copy link

Typer is a CLI python package built on click, so it stands to reason that this project should work just fine with CLIs built with typer.

Here's the output of the command to generate man pages :

poetry run click-man --target ./man my-cli
Load entry point my-cli
Error: Could not find click.Command object for "my-cli".

The entry point points to a typer.Typer instance. The click object can be fetched using typer.main.get_command(app: typer.Typer), which should make it trivial to make the app work.

I've tried to make it work myself :

  • In my main CLI, I've stored the return value of typer.main.get_command(app) where app is my typer.Typer() instance to a variable
  • In poetry, I've set the entry point for my cli to that variable
  • I've then run poetry run click-man --target ./man my-cli on it

I may try to import click-man in my poetry scripts and run it using poetry run gen-man or something, in order to make it work, but having typer support out of the box would be great.

@sbordeynemics
Copy link
Author

import typer
from click_man.core import write_man_pages

from cli import app, __version__


def make_man():
    '''Generates man pages for the CLI'''
    cli = typer.main.get_command(app)
    name = 'cli'
    version = __version__
    target_dir = './man'
    write_man_pages(name, cli, version=version, target_dir=target_dir)
    return

That code snippet seems to work just fine to generate man pages for my typer CLI

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant