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

import sys
from collections import OrderedDict
from knack import CLI, CLICommandsLoader, ArgumentsContext

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

class MyCommandsLoader(CLICommandsLoader):
    def load_command_table(self, args):
        with CommandGroup(__name__, self, 'abc', '__main__#{}') 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 .

Run Automation

This project supports running automation using tox.

pip install tox
tox

Real-world uses

  • Azure CLI: The Azure CLI 2.0 is Azure’s new command line experience for managing Azure resources.

  • VSTS CLI: A command-line interface for Visual Studio Team Services (VSTS) and Team Foundation Server (TFS). With the VSTS CLI, you can manage and work with resources including pull requests, work items, builds, and more.

  • Service Fabric CLI: A command-line interface for interacting with Azure Service Fabric clusters and their related entities.

Do you use knack in your CLI as well? Open a pull request to include it here. We would love to have it in our list.

Release History

See GitHub Releases.

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.

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.3.3.tar.gz (31.3 kB view details)

Uploaded Source

Built Distribution

knack-0.3.3-py2.py3-none-any.whl (42.8 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

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

File hashes

Hashes for knack-0.3.3.tar.gz
Algorithm Hash digest
SHA256 dd2d3c4756975d6bdbbc65a25c067245350eec81547dac93a5c96a80a9f949f0
MD5 f0946b9ba8e43963443cf9349db65740
BLAKE2b-256 879d1ac7e61b373e94ae96c28fc8e80976c24ce2f5d11c5d22330eed0a874dc9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for knack-0.3.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 0b74c7eed73dc799a5d4afab6ffae15bd793abc31bd9efa6b01475245400b8d2
MD5 3af071e6aec47f76f3fad9a429a3242d
BLAKE2b-256 92aad5563dfb2724a5d7899170461f8c70e88f8f9422bd1c44a2a7528e2e6235

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