Skip to main content

A Command-Line Interface framework

Project description

Knack

https://img.shields.io/pypi/v/knack.svg https://img.shields.io/pypi/pyversions/knack.svg https://travis-ci.org/Microsoft/knack.svg?branch=master
 _                     _
| | ___ __   __ _  ___| | __
| |/ / '_ \ / _` |/ __| |/ /
|   <| | | | (_| | (__|   <
|_|\_\_| |_|\__,_|\___|_|\_\

A Command-Line Interface framework

pip install knack

Usage

from knack import CLI, CLICommandsLoader, CLICommand

def abc_list(myarg):
    import string
    return list(string.ascii_lowercase)

class MyCommandsLoader(CLICommandsLoader):
    def load_command_table(self, args):
        with CommandSuperGroup(__name__, self, '__main__#{}') as sg:
            with sg.group('abc') as g:
                g.command('list', 'abc_list')
        return OrderedDict(self.command_table)

    def load_arguments(self, command):
        with ArgumentsContext(self, 'abc list') as ac:
            ac.argument('myarg', type=int, default=100)
        super(MyCommandsLoader, self).load_arguments(command)

mycli = CLI(cli_name='mycli', commands_loader_cls=MyCommandsLoader)
exit_code = mycli.invoke(sys.argv[1:])
sys.exit(exit_code)

More samples and snippets available at examples.

Documentation

Documentation is available at docs.

Developer Setup

In a virtual environment, install the requirements.txt file.

pip install -r requirements.txt
pip install -e .

Contribute Code

This project has adopted the Microsoft Open Source Code of Conduct.

For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

If you would like to become an active contributor to this project please follow the instructions provided in Contribution License Agreement

License

Knack is licensed under MIT.

Release History

0.1.1 (2017-07-05)

  • Add more types of command and argument loaders.

  • Add tests.

0.1.0 (2017-06-16)

  • Initial release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

knack-0.1.1.tar.gz (40.5 kB view details)

Uploaded Source

Built Distribution

knack-0.1.1-py2.py3-none-any.whl (56.5 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file knack-0.1.1.tar.gz.

File metadata

  • Download URL: knack-0.1.1.tar.gz
  • Upload date:
  • Size: 40.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for knack-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b863b360435d18ede08b47ca25bb1085d170a56069b5968b8893372d13397073
MD5 e54476bef9427a29f062110caf441c2e
BLAKE2b-256 c616937c17671875a9053ed81d89eba451d602854bfa1678461b1896113f8211

See more details on using hashes here.

File details

Details for the file knack-0.1.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for knack-0.1.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 825c585d23b27b4669df4fc3738d58f998ebea8f3e29b3a3de3b52377866026d
MD5 3be415039bff243e8d4624f74a1e4c37
BLAKE2b-256 4247107459334212f4369d9012f41a04f655ab43ba06fe25ae53e69b457b2827

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page