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

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

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

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

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

1 Ответ

4 голосов
/ 26 марта 2010

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

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 - " добавить код, который всегда выполняется при выходе ".

...