#!/usr/bin/env python3 import argparse import json import os import sys import textwrap # Append the src dir sys.path.append(os.path.join(os.path.dirname( os.path.dirname(os.path.abspath(__file__))), 'src')) import pass_pipeline_library # noqa (E402 module level import not at top of file) import passes # noqa (E402) normal_pipeline = list(pass_pipeline_library.normal_passpipelines()) pass_pipelines = [x.identifier for x in normal_pipeline] parser = argparse.ArgumentParser(description=textwrap.dedent(""" Generate pass pipelines based off of the normal swift pipeline. """)) parser.add_argument('--disable-pass', nargs='*', help='Disable this pass', choices=[x.name for x in passes.PASSES], action='append', default=[]) parser.add_argument('--disable-passpipeline', nargs='*', help='Disable this pass list', choices=pass_pipelines, default=[], action='append') args = parser.parse_args() disabled_passes = sum(args.disable_pass, []) disabled_passpipelines = sum(args.disable_passpipeline, []) # First filter out pipelines. normal_pipeline_generated = [x.generate() for x in normal_pipeline if x.identifier not in disabled_passpipelines] # Then filter out specific passes. for i in range(len(normal_pipeline_generated)): normal_pipeline_generated[i] = [ x for x in normal_pipeline_generated[i] if x not in disabled_passes] json.dump(normal_pipeline_generated, sys.stdout, sort_keys=True, indent=4, separators=(',', ': '))