#!/usr/bin/env python3

import argparse
import json
import re

def main() -> None:
    parser = argparse.ArgumentParser(
                    prog='filtersrcs',
                    description='Filter bpfilter\'s compile_commands.json to feed it to clang-tidy')
    parser.add_argument('--input', help="Input file")
    parser.add_argument('--output', help="Output file")
    parser.add_argument('-f','--filter', action='append', help='Filter to exclude file path from compile_commands.json', default=[])
    args = parser.parse_args()

    with open(args.input, "r") as f:
        data = json.load(f)

    regexes = [ re.compile(x) for x in args.filter ]
    fdata = [
        entry for entry in data
        if not any([r.match(entry.get("directory", "")) for r in regexes])
    ]

    with open(args.output, "w") as f:
        json.dump(fdata, f)

if __name__ == '__main__':
    main()
