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

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

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

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

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

1 ответ

Решение

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

Другие вопросы по тегам