Skip to main content

Cliar (pronounced as "clear") helps you create command-line interfaces with minimum code.

Project description

Latest Version Downloads License

Cliar (pronounced as “clear”) helps you create command-line interfaces with minimum code:

from cliar import CLI

class Git(CLI):
    '''Git clone created with Cliar'''

    def clone(self, repo, dir='.'):
        '''Clone a git repo from REPO to DIR.'''

        print('Cloning from %s to %s' % (repo, dir))

if __name__ == '__main__':
    Git().parse()

Run the script:

$ python git.py clone http://foo.bar -d baz
Cloning from http://foo.bar to baz

Read the docs at cliar.rtfd.org

Requirements

Cliar runs with Python 2.6, 2.7, and 3.3+ on Windows, Linux, and Mac with not third party dependencies.

Install

Install Cliar from PyPI with pip:

$ pip install cliar

Why another CLI tool?

I know there’re great projects like docopt and click out there. Before creating Cliar, I tried them both.

Long story short, neither click, not docopt allow for easily extendible CLIs. Cliar lets you extend your CLI with simple subclassing.

By extendability I mean the ability to extend CLI defined in one module with commands from another module.

In docopt, this would mean overriding the entire help string or inserting a line into it, which is neither elegant, nor flexible, nor stable.

In click, commands are just functions in the global namespace, and nesting is done with the group decorator. Extending can be done with importing * from one module to another, which is bad practice. Putting the commands inside a class doesn’t work as expected, which makes it impossible to extend CLI with subclassing.

Limitations

Cliar is designed to help you create CLIs quickly and with as little code as possible. For the sake of simplicity, some features are not available:

  • You can’t add help text for arguments. You can though add help text for commands via docstrings.

  • Optional arguments are given in the form “-name, “ which is unconvential, however valid. You can abbreviate optional arguments until it’s unambiguous.

  • No third level commands.

  • Generally speaking, Cliar can’t do a lot of things argparse can, but the idea is that you probably don’t need most of these things.

Contribute

Report a bug

Fork and improve

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

cliar-1.0.9.zip (8.5 kB view hashes)

Uploaded Source

Built Distributions

cliar-1.0.9.win-amd64.exe (144.3 kB view hashes)

Uploaded Source

cliar-1.0.9-py3-none-any.whl (6.7 kB view hashes)

Uploaded Python 3

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