Fabric: hide ('работает') на уровне задач не работает

Созданный на 25 авг. 2011  ·  9Комментарии  ·  Источник: fabric/fabric

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 проблемы возникают из этой пустой строки?

Спасибо,
Свен

Самый полезный комментарий

  • как также скрыть «Готово». распечатывается после завершения?
  • как еще скрыть "Отключение от my.server.com ... выполнено."?

Было бы полезно, если бы я мог просто отключить ВСЕ (на самом деле буквально все) вывод, кроме того, что я явно распечатываю, кроме случаев, когда есть проблема.

Все 9 Комментарий

если вы посмотрите на ткань. 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. Если потянет, напишу патч.

  • как также скрыть «Готово». распечатывается после завершения?
  • как еще скрыть "Отключение от my.server.com ... выполнено."?

Было бы полезно, если бы я мог просто отключить ВСЕ (на самом деле буквально все) вывод, кроме того, что я явно распечатываю, кроме случаев, когда есть проблема.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги