hug icon indicating copy to clipboard operation
hug copied to clipboard

CLI help message seems broken when using subcommands

Open hoshiyosan opened this issue 5 years ago • 0 comments

CLI help message seems broken when using subcommands

Example for the following code

Content of manage.py

"""
Manage database objects
Usage:  manage [-h] COMMAND [options]
"""

import hug


# Create user api
users_api = hug.API(name='users', doc='Manage users')

@hug.object(name='user', api=users_api)
class UsersCLI:
    @staticmethod
    @hug.object.cli
    def add(name:hug.types.text):
        """Create user"""

    @staticmethod
    @hug.object.cli
    def rm(id:hug.types.number):
        """Remove user with given id"""


# Create permission api
permissions_api = hug.API(name='permissions', doc="Manage users permissions")

@hug.object(name='permission', api=permissions_api)
class PermissionCLI:
    @staticmethod
    @hug.object.cli
    def add(name:hug.types.text):
        """Create permission"""

    @staticmethod
    @hug.object.cli
    def attach(uid:hug.types.number, pid:hug.types.number):
        """Give permission {pid} to user {uid}"""


def main():
    api = hug.API(name='manage', doc=__doc__)
    api.extend(users_api, sub_command='users')
    api.extend(permissions_api, sub_command='permissions')
    api.cli()


if __name__ == '__main__':
    main()

Actual behavior

Currently doing...

python -m manage

...results in :

Manage database objects
Usage:  manage [-h] COMMAND [options]


Available Commands:

 - users: Manage users  Available Commands:   - add: Create user  - rm: Remove...
 - permissions: Manage users permissions  Available Commands:   - add: Create...

Proposed behavior

It should rather be:

Manage database objects
Usage:  manage [-h] COMMAND [options]


Available Commands:

 - users         Manage users
 - permissions   Manage users permissions

hoshiyosan avatar Oct 24 '20 15:10 hoshiyosan