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 details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Source

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

Uploaded Python 3

File details

Details for the file cliar-1.0.9.zip.

File metadata

  • Download URL: cliar-1.0.9.zip
  • Upload date:
  • Size: 8.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for cliar-1.0.9.zip
Algorithm Hash digest
SHA256 75db7114994bdb525aaad2f4e0d30ebed4ec58424caf919a836b20fc5b2e0977
MD5 632d128970883a9b3c9dee9024260bdb
BLAKE2b-256 5e9cfbb6ccd29f7a2c3d2e37bbac0f9e11c284581c813e18e51ebfffecaf88f7

See more details on using hashes here.

File details

Details for the file cliar-1.0.9.win-amd64.exe.

File metadata

  • Download URL: cliar-1.0.9.win-amd64.exe
  • Upload date:
  • Size: 144.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for cliar-1.0.9.win-amd64.exe
Algorithm Hash digest
SHA256 c3e93914b7ff81a9c041e60d42ce071e36a7957e72432696f3a4ff58291a2703
MD5 23ee3a4ea88430e7ef1f4484e6678f1d
BLAKE2b-256 325249bd64d2222b3a508f7f9d51f35e45df4ac906341c56c6ca31c513866473

See more details on using hashes here.

File details

Details for the file cliar-1.0.9-py3-none-any.whl.

File metadata

File hashes

Hashes for cliar-1.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 d93b0cc87a287c94ad8ea2722ccc8e0b4bc3cfe16965cbce454a07073f77fffb
MD5 a4be06f9e3e6b4d844fab5f5a167dad5
BLAKE2b-256 b610b71314eb62a333a77c786308283790a16f9d9d1a1978d063880c85bc44c7

See more details on using hashes here.

Supported by

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