X-Git-Url: https://git.decadent.org.uk/gitweb/?p=dak.git;a=blobdiff_plain;f=dak%2Fprocess_commands.py;h=c679d9c2422acb04582a7fef3d309468c7566216;hp=a4ae1f505dab130d65ef53adfb6f0c09c16d377d;hb=fdbef587c29814f97c192de5a8b7e9f09cc45fa4;hpb=9b194c0a49096be2d659906c98500d2981b75b53 diff --git a/dak/process_commands.py b/dak/process_commands.py index a4ae1f50..c679d9c2 100644 --- a/dak/process_commands.py +++ b/dak/process_commands.py @@ -20,11 +20,13 @@ import apt_pkg import datetime import os import sys +import time from daklib.config import Config from daklib.command import CommandError, CommandFile from daklib.daklog import Logger from daklib.fstransactions import FilesystemTransaction +from daklib.gpg import GpgException from daklib.utils import find_next_free def usage(): @@ -64,16 +66,28 @@ def main(argv=None): log.log(['unexpected filename', basename]) continue - command = CommandFile(fn, log) - if command.evaluate(): - log.log(['moving to done', basename]) - dst = find_next_free(os.path.join(donedir, basename)) - else: - log.log(['moving to reject', basename]) + with open(fn, 'r') as fh: + data = fh.read() + + try: + command = CommandFile(basename, data, log) + command.evaluate() + except: + created = os.stat(fn).st_mtime + now = time.time() + too_new = (now - created < int(cnf.get('Dinstall::SkipTime', '60'))) + if too_new: + log.log(['skipped (too new)']) + continue + log.log(['reject', basename]) dst = find_next_free(os.path.join(rejectdir, basename)) + else: + log.log(['done', basename]) + dst = find_next_free(os.path.join(donedir, basename)) with FilesystemTransaction() as fs: - fs.move(fn, dst, mode=0o644) + fs.unlink(fn) + fs.create(dst, mode=0o644).write(data) fs.commit() log.close()