一个受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第三方库


热门话题
java Eclipse无法识别jsonsimple   linux Tomcat是否在符号链接/usr/bin/java下使用java?   使用Swing工具包构建Java GUI   java Subversive SVN只检出丢失的文件   java语言在没有显式类型转换的情况下能否“完整”?   Selenium>Webdriver>Java>单击模型窗口中的按钮时,另一个后台按钮正在触发   Java私有视频YouTube   JavaScriptJava。lang.NullPointerException servlet   java More Mockito返回\u DEEP\u STUBS悲哀   迭代器Java,谷歌收藏库;AbstractIterator有问题吗?   使用java在flash网页中获取验证码会话的http图像   sql从java向ms access插入数据   java Android WebView不加载URL?   制作java自定义注释以标记用于html清理的bean属性   java如何在Jframe中输出结果