Как я могу передать параметр в задачу фабрики при вызове "fab" из командной строки? Например:
def task(something=''):
print "You said %s" % something
$ fab task "hello"
You said hello
Done.
Можно ли это сделать без подсказки fabric.operations.prompt
?
hello world
кажутся необходимыми?world
это новая задача.'hello world'
в результате будет строка Python'hello world'
, но"hello world"
в результатеhello world
(что, вероятно, захотело бы большинство людей).bar=True
в ткань будет передана команда,bar='True'
которая не является логическим значениемАргументы ткани понимаются с помощью очень простого синтаксического анализа строк, поэтому вы должны быть немного осторожны с тем, как вы их отправляете.
Вот несколько примеров различных способов передачи аргументов следующей тестовой функции:
Здесь я использую двойные кавычки, чтобы исключить оболочку из уравнения, но одинарные кавычки могут быть лучше для некоторых платформ. Также обратите внимание на экраны для символов, которые ткань считает разделителями.
Подробнее в документах: http://docs.fabfile.org/en/1.14/usage/fab.html#per-task-arguments.
источник
В Fabric 2 просто добавьте аргумент в функцию задачи. Например, чтобы передать
version
аргумент задачеdeploy
:Запустите его следующим образом:
Fabric даже автоматически документирует параметры:
источник
Вам необходимо передать все переменные Python в виде строк, особенно если вы используете подпроцесс для запуска скриптов, иначе вы получите сообщение об ошибке. Вам нужно будет отдельно преобразовать переменные обратно в типы int / boolean.
источник
Если кто-то хочет передать параметры от одной задачи к другой в Fabric2, просто используйте для этого словарь среды:
И запускаем:
источник