1) он не скрывает такие вещи, как «выполнение задачи ...»
2) он удаляет символы новой строки из последнего вывода, таким образом присоединяясь к следующей строке вывода
fabfile:
@задача
def show_hostname ():
с настройками (скрыть ('работает')):
запустить ('имя хоста')
запустить ('дата')
% /opt/python-2.7/bin/fab -f output.py -H x1, x2 имя_показа
[x1] Выполнение задачи "show_hostname"
[x1] выход: x1mydomain.de
[x1] out: [x1] out: Thu Aug 25 10:34:10 CEST 2011
[x1] out: [x2] Выполнение задачи 'show_hostname'
[x2] выход: x2.mydomain.de
[x2] out: [x2] out: Thu Aug 25 10:34:11 CEST 2011
[x2] выход:
Сделанный.
и пока мы на нем:
3) run ('hostname'), например, всегда выводит пустую строку, например:
[h1] Выполнение задачи "show_hostname"
[h1] out: h1.mydomain.de
[h1] выход:
3) по назначению и 1,2 проблемы возникают из этой пустой строки?
Спасибо,
Свен
если вы посмотрите на ткань. main: main , вы увидите, что «выполнение» происходит вне задачи, поэтому она не скрыта функцией hide. В качестве обходного пути (глобального!) Вы можете установить fabric.state.output ['running'] = False или передать --hide = running.
Грегг прав в отношении выполнения - это должна быть глобальная настройка из-за того, когда печатаются строки «Выполнение» - хотя я признаю, что это не очень интуитивно понятно, и хотел бы найти лучший способ обойти это. (Я могу придумать один способ сделать это для задач нового стиля, но не уверен, что в настоящий момент стоит увеличивать различия в поведении между двумя типами ...)
Новые строки в конце блоков stdout
преднамеренно, IIRC, хотя я не могу вспомнить, вставляем ли мы их явно или действительно ли это с удаленного конца (и просто запускает префикс новой строки). Но Я не думаю, что это ошибка _ per se_.
«Отсутствующие» символы новой строки могут быть связаны - мне придется перепроверить. Может быть ситуация, когда это так или иначе должно было выглядеть уродливо, и нам пришлось перенести уродство на менее распространенный случай.
Есть ли какие-нибудь обновления по поводу этой ошибки / несоответствия пользовательского интерфейса? Я пытаюсь отслеживать файл через фабрику, и было бы здорово замаскировать этот вывод "[hostname]".
Пробовал fabric.state.output['running'] = False
, ничего не изменилось.
@charlax Вы можете использовать fab --hide=running
и это приведет к отключению этого выходного уровня с самого начала выполнения, поэтому он должен скрыть все вещи «запущенной задачи x», которые нельзя скрыть из самих задач. Не уверен, почему я не упомянул об этом в предыдущем комментарии.
Вы также должны иметь возможность внести это изменение fabric.state.output
вы упомянули, на уровне модуля (верхний) в вашем fabfile - где именно вы поместили его, когда пытались? Если он находится внутри задачи, он все равно не сработает.
Да ладно, на самом деле я пытаюсь скрыть часть [host.com] out:
, извините за недоразумение.
Имеется в виду _ только_ эта часть линии? Для этого есть личная настройка конфигурации, но я не вижу, чтобы это изменилось до выхода fab 2.0, поэтому я открою вам секрет: это env.output_prefix
, установите его в False, и он просто вывести литерал stdout / stderr без префиксов строк.
Спасибо!
Похоже, что декоратор @hosts () должен позволять скрывать "хостовую" часть текущего вывода без принудительного отключения
fabric.state.output['running']
глобально. Это позволит переопределить env.hosts для одного метода, для чего он предназначен. Кажется, что он должен вести себя как env.hosts в том случае, если он установлен на пустой итератор (или None), должен запускать выполнение local_only, которое не будет печатать хост. В настоящее время пустой итератор в @hosts игнорируется и возвращается к использованию env.hosts. Если потянет, напишу патч.
Было бы полезно, если бы я мог просто отключить ВСЕ (на самом деле буквально все) вывод, кроме того, что я явно распечатываю, кроме случаев, когда есть проблема.
Самый полезный комментарий
Было бы полезно, если бы я мог просто отключить ВСЕ (на самом деле буквально все) вывод, кроме того, что я явно распечатываю, кроме случаев, когда есть проблема.