一个受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 Kafka DSL Kstream>Ktable连接序列化编译错误   java为什么Bean A中的参数注入会破坏属性解析Bean B?(都是类型PropertyPlaceHolderConfigure的类型)   java Oracle SQL开发人员在尝试导出数据时调用TargetException   编辑JTree中返回的java意外值   Java,Lambda:如何从不同类型的列表集合中查找列表?   如何使用java执行命令   java如何将drawable分配给widgets按钮   JavaIntelliJ13JSF对Springbeans的支持   java转换。转换成补语   java Tomcat的性能测试   sendmail Java发送邮件函数   java重用ProjectReactor/Flux/Mono被认为是最佳实践吗?   javafx在Java中错误地转换为lambda表达式   反序列化json数组,其中属性值为数组java   java After ItemClickListener调用方法   此Java代码中有多少对象符合垃圾收集条件?   java程序“keytool”可以在以下包中找到