Como posso passar um parâmetro para uma tarefa de malha ao chamar "fab" na linha de comando? Por exemplo:
def task(something=''):
print "You said %s" % something
$ fab task "hello"
You said hello
Done.
É possível fazer isso sem avisar fabric.operations.prompt
?
hello world
parecem necessárias?world
era uma nova tarefa.'hello world'
resultaria em uma string Python de'hello world'
, mas"hello world"
resultaria emhello world
(que provavelmente é o que a maioria das pessoas gostaria).bar=True
no comando tecido vai passada comobar='True'
o que não é boolean valorOs argumentos de malha são entendidos com uma análise de cadeias muito básica, portanto, você deve ter um pouco de cuidado com a forma como os envia.
Aqui estão alguns exemplos de maneiras diferentes de passar argumentos para a seguinte função de teste:
Eu uso aspas duplas aqui para tirar o shell da equação, mas aspas simples podem ser melhores para algumas plataformas. Observe também as fugas dos caracteres que a malha considera delimitadores.
Mais detalhes nos documentos: http://docs.fabfile.org/en/1.14/usage/fab.html#per-task-arguments
fonte
No Fabric 2, basta adicionar o argumento à sua função de tarefa. Por exemplo, para passar o
version
argumento para a tarefadeploy
:Execute-o da seguinte maneira:
O Fabric até documenta as opções automaticamente:
fonte
Você precisa passar todas as variáveis Python como seqüências de caracteres, especialmente se estiver usando o subprocesso para executar os scripts, ou você receberá um erro. Você precisará converter as variáveis novamente para tipos int / booleanos separadamente.
fonte
Se alguém estiver procurando passar parâmetros de uma tarefa para outra no fabric2, basta usar o dicionário de ambiente para isso:
E corra:
fonte