用于命令行应用程序的python框架
battalion的Python项目详细描述
用于命令行应用程序的python框架
快速启动
不耐烦吗?我喜欢你的风格。
$ pip install battalion
在mycli.py脚本中:
frombattalion.apiimport*classDB(object):def__init__(self,state):self.msg=state.msgdefmyfunc(self):returnself.msg@fixturedefdb(state):returnDB(state)classmycli(CLI):""" Toplevel program - mycli """classState:version='0.0.1'msg=""@commanddefnormal_function(cli,db,data=None):# NOTE: the "db" arg will be populated from the "db" fixture function"""Takes in data and outputs new data"""ifdataisNone:returndb.myfunc()else:returndata@commanddefgreeting(cli,name="Hello"):""" Prints "Hello {name}!" """print"Hello {0}!".format(name)classmyhandler(Handler):""" Organizational container of commands which can also add state variables """classState:version='0.0.2'# Handlers can have their own versioningcli='mycli'msg="World"@commanddefvalidate(cli,data):returndata@commanddefhello(cli,msg=None):""" Prints "Hello World!" """name=cli.normal_function(data=msg)name=cli.myhandler.validate(data=name)cli.greeting(name=name)if__name__=="__main__":mycli.main()
然后在命令行上
$ python mycli.py myhandler hello > Hello World! $ #or if installed as a console script via setuptools $ mycli myhandler hello > Hello World! $ #also $ mycli myhandler hello "Josh" > Hello Josh! $ mycli --help > Toplevel program - mycli > > Usage: > mycli [options] <command> [<args>...] > mycli [options] > > Options: > -h, --help Show this screen. > --version Show version. > -d, --debug Show debug messages > --config=<CONFIG> The config filepath [default: ~/.mycli.cfg] > > Commands: > greeting Prints "Hello {name}!" > myhandler Organizational container of commands which can also add state variables > $ mycli myhandler hello --help > Prints "Hello World!" > > Usage: > hello [options] > hello <msg> > > Options: > --msg=<MSG> [default: None] >