用于用静态配置包装cli命令的库。
abcmd的Python项目详细描述
用于用静态配置包装shell命令的库。
用法
库提供可以使用的abcmd.Commandabc 创建shell命令包装器。
子类化abcmd.Command需要实现以下方法:
- run
此外,以下方法是可选的,只有在实现时才会运行:
- dont_run
- handle_error
- before_run
- after_run
decoratorabcmd.error_handler用于修饰 只为匹配错误调用,这些错误没有特定的处理程序 如果实现了handle_error方法,则返回到调用该方法。
示例
自动备份点文件
首先,我们对Command进行子类划分,并描述过程:
importdatetimeimportosimportabcmdclassBackup(abcmd.Command):make='mkdir {directory}'copy='cp {files} {directory}'sync='rsync {directory} {user}@{server}:'defrun(self,*args,**kwargs):os.chdir(os.environ['HOME'])self.make()self.copy()self.sync()defdont_run(self,*args,**kwargs):# don't run between working hoursreturndt.datetime.now().hourinrange(8,16)defhandle_error(self,cmd,error):# if the backup directory exists ignore the error and continuereturncmd.startswith('mkdir')anderror.endswith('File exists')
然后我们用一个用来呈现模板的映射来实例化, 这将返回一个可调用对象,调用该对象时将运行过程:
config={'user':'laerus','directory':'dotfiles','files':['.vimrc','.bashrc','.inputrc'],'server':'192.168.1.10'}runner=Backup(config)runner()
这相当于运行以下命令:
$ cd ~
$ mkdir dotfiles
$ cp .vimrc .bashrc .inputrc dotfiles
$ rsync dotfiles laerus@192.168.1.10:
安装
$ pip install abcmd
兼容性
Python3.5+
许可证
麻省理工学院