Как я могу добавить код, который всегда выполняется Waf перед выходом?

Я хочу, чтобы Waf генерировал звуковой сигнал, когда завершает выполнение любой команды, которая заняла больше времени. чем 10 секунд.

Я не знаю, как добавить это и убедиться, что код выполняется при выходе из Waf.

Это должно работать для любой команды Waf, а не только для сборки.

Я проверил книгу Waf, но не смог найти указаний о том, как мне поступить. это.


person sorin    schedule 26.03.2010    source источник


Ответы (1)


В вашем модуле wscript вы можете использовать стандартную библиотеку Python atexit для регистрации вызываемых объектов, которые вы хотите вызывать при завершении процесса. Например:

import atexit
import time

class MayBeep(object):
  def __init__(self, deadline=10.0):
    self.deadline = time.time() + deadline
  def __call__(self):
    if time.time() > self.deadline():
      print '\7'

atexit.register(MayBeep())

... rest of your wscript module ...

Конечно, вы можете использовать что-то лучше, чем print '\7', для звуковых целей (вплоть до полноценных мультимедийных экстравагантий, в зависимости от того, какие другие расширения Python вы импортируете и используете), но этот код соответствует заголовку Q — «добавьте код, который всегда выполняется на выходе".

person Alex Martelli    schedule 26.03.2010