python实用程序带
pub的Python项目详细描述
pub是一个工具,可以帮助您自动执行那些不想执行的任务 手动操作。它试图为您的 建立、清洁和部署需求。
pub代码只是python代码,允许您利用 你已经熟悉的工具。
只需安装pub,在目录中保存一个pub.py文件,然后启动 编码。
下面是一个pub.py示例,有两个任务,一个用于构建项目,另一个用于 要将其部署到服务器:
from pub import task from pub.shortcuts import mkdir, cp, rsync @task def build(): mkdir("build") cp("src/binary", "build") @task("build") def deploy(): rsync("build", "user@server:~")
pub.shortcuts模块为我们提供了访问命令行的便捷快捷方式 功能。
deploy任务依赖于build任务,因此调用 pub deploy将首先运行生成任务,然后部署。
安装
pip install pub
任务
pub模块中的taskdecorator将是代码的主 与pub的接口。
您可以创建一个没有参数的任务:
from pub import task @task def zomg(): print "omgbbq"
如果对包含此函数的pub.py文件运行pub zomg,则 将看到“omgbbq”打印出来。
也可以创建带有参数的任务。每个参数都应该是 另一个函数的名称。参数列表中的函数都是 在执行任务之前执行。
例如:
from pub import task @task def foo(): print "foo" @task("foo") def bar(): print "bar" @task("foo", "bar") def baz(): print "baz"
如果运行pub foo,您将看到“foo”。
如果运行pub bar,您将看到“foo”后跟“bar”。
如果您运行pub baz,您将看到“foo”后跟“bar”后跟 “巴兹”。
依赖关系将从左到右解析,这意味着 依赖项列表中每个项在其左侧的隐含依赖项 邻居。注意不要创建循环依赖项 所以:
from pub import task @task def foo(): print "foo" @task("foo") def bar(): print "bar" @task("bar", "foo") def baz(): print "baz"
在这种情况下,bar依赖于foo定义的bar, 但是foo根据baz的定义依赖于bar。酒吧将是 对这种情况感到困惑,然后用一个 错误。
有两个合法关键字可用于任务装饰器: private和default。private只表示pub -l 不会列出您的任务;如果您有一个pub.py文件,如:
from pub import task @task(private=True) def private_func(): pass
然后运行pub -l,它通常列出所有任务,private_func 不会被列出。
default将任务标记为默认操作。如果你有一个pub.py 例如:
from pub import task @task(default=True) def do_something(): print "got here"
运行pub,不带任何参数,您应该会看到“got here”被打印出来。
您可以将任意数量的任务标记为default;如果 pub调用时没有参数。而他们的依赖信息 永远不会被忽视,没有明确的顺序 快跑。
任务只是通过给它们docstring来记录的。鉴于此 pub.py:
from pub import task @task def gotit(): """You've got it!""" pass @task def noyou(): """I thought you had it.""" pass
我们可以通过pub:
$ pub -l gotit: You've got it! noyou: I thought you had it.
快捷键
pub.shortcuts模块建立在@kennethritz的fine上 envoy模块提供 方便的pub命令行界面。
您可以看到所有可用的命令in the source, 或者您可以自己制作:
from pub.shortcuts import make_shortcut gcc = make_shortcut("gcc") #then use it like so: gcc("-o guildenstern.exe rosencrantz.c")
最后对gccfunciton的调用将转换为 gcc -o guildenstern.exe rosencrantz.c然后运行。
我们还可以使用快捷方式检查输入、输出和状态 命令的代码;快捷方式的返回值将是 envoy结果。检查他们的 有关详细信息的文档,但基本上可以使用以下命令查看其输出:
from pub.shortcuts import make_shortcut echo = make_shortcut("echo") out = echo("A conspiracy of cartographers") assert out.std_out == "A conspiracy of cartographers\n"
pub.shortcuts模块还包含一个实用函数, newer。它只接受两个参数,如果mtime 第一个的时间比第二个的时间新。它的全部定义 如下:
def newer(f1, f2): return stat(f1).st_mtime > stat(f2).st_mtime
pub命令
pub命令最好通过其--helpoutput:
usage: pub [-h] [-l] [-f FILE] [task [task ...]] Python Utility Belt v0.0.4 positional arguments: task the tasks to run optional arguments: -h, --help show this help message and exit -l list available tasks -f FILE, --pubfile FILE The file to use as a pubfile