一个受npm脚本启发的小任务运行器。

pyxcute的Python项目详细描述


https://api.codacy.com/project/badge/Grade/6ffe1c58a9f7404293f870a5183d8ad8https://travis-ci.org/eight04/pyXcute.svg?branch=masterDocumentation Status

一个受npm脚本启发的小任务运行器。

功能

  • 像setuptools一样使用它。
  • 使用_pre_err_post_fin后缀链接任务。
  • 一个内置的bump任务,可以用semver来bump版本。
  • 一组跨平台的小程序。

安装

>;来自pypi

pip install pyxcute

用法

基本

创建一个cute.py文件:

fromxcuteimportcutecute(hello='echo hello xcute!')

然后运行:

$ cute hello
> Task: hello
> Cmd: echo hello xcute!
hello xcute!
If you got a “not a command” error, see How do I make Python scripts executable?)

“hello”是应该执行的任务的名称。如果cute.py在没有任务名的情况下执行,它将运行“默认”任务。

提供其他参数:

$ cute hello 123
> Task: hello
> Cmd: echo hello xcute! 123
hello xcute! 123

参数将传递给执行器,在本例中是xcute.Cmd.__call__

任务

它可以是str:

fromxcuteimportcutecute(hello='echo hello')

如果与另一个任务的名称匹配,pyxcute将执行该任务:

fromxcuteimportcutecute(hello='world',# execute "world" task when "hello" task is executedworld='echo I am world task')

使用列表:

fromxcuteimportcutecute(hello=['echo task1','echo task2'])

使用异常将使任务失败:

fromxcuteimportcutecute(hello=Exception("error message"))

使用任何可调用的内容:

fromxcuteimportcutecute(hello=lambda:print('say hello'))

实际上,当您将不可调用的值指定为任务时,pyxcute会根据其类型将其转换为可调用的值。

任务链

_pre_err_post_fin后缀定义工作流:

fromxcuteimportcutecute(hello_pre='echo _pre runs before the task',hello='echo say hello',hello_err='echo _err runs if there is an error in task, i.e, an uncaught exception or non-zero return code',hello_post='echo _post runs after the task if task successfully returned',hello_fin='echo _fin always runs after _post, _err just like finally')

当任务执行时,任务运行器首先尝试执行_pre任务,然后是任务本身,然后是_post任务。如果任务引发异常,则它将转到_err任务。_fin无论任务是否失败,都将执行任务。

伪代码:

run(name+"_pre")try:run(name,args)exceptException:run(name+"_err")else:run(name+"_post")finally:run(name+"_fin")

格式字符串

pyxcute使用xcute.conf字典扩展命令字符串。扩展在运行时发生:

fromxcuteimportconf,cuteconf["my_name"]="world"defchange_my_name():conf["my_name"]="bad world"cute(hello=["echo hello {my_name}",change_my_name,"echo hello {my_name}"])
$ cute hello
> Task: hello
> Cmd: echo hello world
hello world
> Cmd: echo hello bad world
hello bad world

跨平台实用程序

有一些cli实用程序受到npm-build-tools的启发,包括:

  • X-清洁
  • X-CAT
  • X-复印
  • X形管

使用-h运行每个命令以查看帮助消息。

实例

检查pyxcute本身的the cute file

更改日志

  • 0.5.2(2018年6月14日)
    • 添加:在Bump中支持bumper参数。
    • 添加:支持Python3.4。删除subprocess32
  • 0.5.1(2018年5月12日)
    • 添加:conf["py"]变量。
  • 0.5.0(2018年5月11日)
    • 添加:支持python 2。
    • 添加:文档。
    • 添加:Skiprun_tasktask_converter
    • add:`bump`任务现在更新'setup.cfg'中的版本号。
    • 修复:由于shell=True并将args作为列表传递,在UNIX上,Cmd任务失败。
    • change:`cmd'的命令现在已被记录。日志消息也已更改。
    • drop:`noop`.
  • 0.4.1(2017年4月3日)
    • 更好地描述x-clean。
    • 修复X-Pipe中的断管错误。
  • 0.4.0(2017年3月28日)
    • 切换到setup.cfg。
    • 添加日志,exc,noop,throw,try。
    • {STR 1 } $ EXC退出,< /强>
    • 添加x-*utils。
  • 0.3.1(2017年3月23日)
    • {pkg_name}/__pkginfo__.py中查找版本。
  • 0.3.0(2016年7月21日)
    • 添加pkg_name任务。
    • 添加默认任务bumpversion
  • 0.2.0(2016年5月14日)
    • 添加表示finally子句的_fin标记。
    • 添加EXC和退出任务。
  • 0.1.2(2016年4月20日)
    • 将pre移出try子句。
  • 0.1.1(2016年4月20日)
    • bump dev状态。
  • 0.1.0(2016年4月20日)
    • 第一次释放。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用多个参数的枚举   从Oracle到Redis的java复制表   java如何保护tomcat服务器中的db用户名和密码。xml   java如何使用注册密钥保护移动应用程序?   java在什么情况下超类不应该是抽象的?   java Backspace键在macOS上的Scala REPL中不起作用   arduino Java+Uno+RFID:调用方法读取Java中的RFID   带有where语句中集合的java JPA查询   java如何向基于Tyrus注释的客户端添加请求头   java对我的二进制搜索算法的反馈   java重新访问数据库时文件的内容不正确   用户在字符串中输入值后退出While循环(Java)   java如何在Maven中的多个项目之间共享项目依赖关系?   java Close从未在数据库上被明确调用   在java中从文件读入布尔矩阵   Java:如何使用父节点将XML流拆分为小型XML文档。VTDXML