Fabric:管道任务的输出作为另一个任务输入

时间:2014-09-29 15:21:51

标签: python fabric

我想将两项任务联系起来:

  • 第一个创建一个具有任意名称
  • 的存档(create_archive
  • 第二个将存档上传到FTP服务器(upload_archive

我想像这样调用它们:fab create_archive upload_archive

是否有一种方法/语法可以自动将create_archive的输出传递给upload_archive的输出,就像bash |字符一样?

提前致谢

1 个答案:

答案 0 :(得分:0)

看起来不像。我在http://docs.fabfile.org/en/1.10/上没有在结构文档中看到任何提及。

我能想到的最接近的事情是使用外部变量管理状态,比如附加到env或模块中的全局变量。

即:

from fabric.api import run, env, task

@task
def setup():
    env.hosts = ['localhost']

env.counter = 1
env.lines = ""

@task
def task1():
    env.counter += 1
    result = run("seq {}".format(env.counter))
    env.lines += "#task1\n{}".format(result)


@task
def task2():
    env.counter += 1
    result = run("seq {}".format(env.counter))
    env.lines += "#task2\n{}".format(result)

@task
def task3():
    print repr(env.lines)

# fab setup task1 task2 task3

然后在shell中:

$ fab setup task1 task2