Command line made as easy as a web app
Writing CLI is NOT funny. Especially with all the argument parsing and shit. This is why this module exists.
$ pip install clifactory
#!/usr/bin/env python # -*- coding: utf-8 -*- from clifactory import CommandLineInterface, Argument cli = CommandLineInterface() users = ["John Doe", "Dick Head"] @cli.endpoint(Argument('user', help='username to add')) def do_user_add(args): users.append(args.user) print users @cli.endpoint() def do_user_list(args): print users cli.parse()
As shown in the example.py file.
You can run it like:
$ ./exemple.py user add usage: exemple.py user add [-h] user exemple.py user add: error: too few arguments $ ./exemple.py user add "foo bar" ['John Doe', 'Dick Head', 'foo bar']
Simple as that :)
Some more documentation is comming, stay tuned.
Using the module
You have to import the components you need, which for now are:
Then instanciate a CommandLineInterface:
cli = CommandLineInterface()
Then decorate your endpoint as follows:
@cli.endpoint( Argument('argument', help="some help"), # positional arg Argument('--user', '-u') # optional argument ) def do_something(args): print args # args is a argparse.Namespace object
You can add as many arguments as you wish, the parameters have to follow the argparse.add_argument syntax. Note that your function’s name must be prefixed with do_ in order for the parsing to work. It will just break the name of the function into a “tree” where each _-delimited word will be a leaf. So you can add more methods to your ‘user’ endpoint.
Finally to parse something, just call:
This will parse arguments from sys.argv. Alternatively, you may parse an arbitrary string:
I told you it does not have to be hard!
Copyright (C) 2015 Thomas Maurice <firstname.lastname@example.org> This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.