如何将自定义选项传递给fab命令

时间:2018-09-28 18:34:29

标签: python fabric

我想将fabfile重用于多个项目。

config.ini

[project1]
git_repo = git@github/project1
project_path = '/path/project1'
[project2]
git_repo = git@github/project22
project_path = '/path/project2'

fabfile.py

from fabric import task
config = configparser.ConfigParser()
config.read("conf.ini")

@task
def getcode(connection, project, git_repo):
    args = config['project]
    connection.run("git clone {}".format(git_repo))

@task
def pushcode(connection, project, git_repo):
    args = config['project]
    connection.run("git push {}".format(git_repo))

如何避免在每种方法中都使用args = config['project]。我可以使用fab命令fab -H web1 --project=project1 pushcode传递自定义参数。需要帮助。

2 个答案:

答案 0 :(得分:0)

是的。 实际上,let n=3 let madeWithLiteral = []; for(let i=0;i<n;i++){ madeWithLiteral.push([]); } madeWithLiteral[0].push(3); madeWithLiteral; CLI工具与Invoke的fab CLI工具具有相同的选项。

看看that part of Invoke's docs,您会发现它与您提出的语法相同:)

答案 1 :(得分:0)

当然,您可以将参数传递给fab任务,这些任务在invoke.task下进行屋顶任务调用。 我将举一个例子,你怎么做: fabfile.py

from fabric import task

@task
def sampleTask(connection, name, laste_name, age):
    print("The firstname is ", name)
    print("The lastname is ", laste_name)
    print("The age is ", age)

,然后从命令行这样调用它: 命令行

fab sampleTask -n peshmerge -l Mo -a 28

输出应如下所示:

[vagrant@localhost fabric]$ fab sampleTask -n peshmerge -l Mo -a 28
The firstname is Peshmerge
The lastname is Mo
The age is 28

注意:为您的任务指定一个包含下划线(_)的名称将导致错误

No idea what 'sample_task' is!

命名任务参数也是如此。