Anton Shestakov <av6@dwimlabs.net>, Mon, 13 Jun 2016 23:05:22 +0800
checker: don't forget to actually raise the exception in run_ignore_1()
checker.py
Permissions: -rwxr-xr-x
from __future__ import print_function from argparse import ArgumentParser, FileType from datetime import datetime from shutil import rmtree from subprocess import check_call, CalledProcessError from tempfile import mkdtemp rel = lambda *x: os.path.abspath(os.path.join(os.path.dirname(__file__), *x)) print('$ ' + ' '.join(args)) def run_ignore_1(fn, args): except CalledProcessError as e: def run(args, silent=False, ignore_1=False): print('# C&O error: {}'.format(e)) print('# C&O job failed') return datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S+00:00') print('# C&O job started: {}'.format(now())) tmp = mkdtemp(prefix='candolint.', dir=rel('workdir')) print('# C&O task: clone') print('# C&O project URL: {}'.format(config['url'])) if ok and not run(['hg', 'clone', config['url'], source]): print('$ cd {}'.format(source)) if ok and not run(['hg', 'sum']): template = (r'# C&O commit: {rev}:{node} {branch}\n' r'# C&O commit date: {date|isodatesec}\n' r'# C&O commit author: {author|person}\n' r'# C&O commit message: {desc|firstline}\n') if not run(['hg', 'log', '-r', '.', '-T', template], silent=True): print('# C&O task: setup') print_and_run(['virtualenv', venv]) pip = os.path.join(venv, 'bin', 'pip') for linter in config['linters']: if not run([pip, 'install'] + linter['pip']): print('# C&O task: cleanup') print('# C&O job finished: {}'.format(now())) parser = ArgumentParser() parser.add_argument('config', help='configuration file (YAML)', type=FileType('r')) args = parser.parse_args() config = yaml.safe_load(args.config) if __name__ == '__main__':