def METHOD_NAME():
    parser = argparse.ArgumentParser(
        description="Transform a unity build into an amalgamation"
    )
    parser.add_argument("source", help="source file")
    parser.add_argument(
        "-I",
        action="append",
        dest="include_paths",
        help="include paths for private headers",
    )
    parser.add_argument(
        "-i",
        action="append",
        dest="public_include_paths",
        help="include paths for public headers",
    )
    parser.add_argument(
        "-x", action="append", dest="excluded", help="excluded header files"
    )
    parser.add_argument("-o", dest="source_out", help="output C++ file", required=True)
    parser.add_argument(
        "-H", dest="header_out", help="output C++ header file", required=True
    )
    args = parser.parse_args()
    include_paths = list(map(path.abspath, args.include_paths or []))
    public_include_paths = list(map(path.abspath, args.public_include_paths or []))
    excluded.update(map(path.abspath, args.excluded or []))
    filename = args.source
    abs_path = path.abspath(filename)
    with open(filename) as f, open(args.source_out, "w") as source_out, open(
        args.header_out, "w"
    ) as header_out:
        print('#line 1 "{}"'.format(filename), file=source_out)
        print('#include "{}"'.format(header_out.name), file=source_out)
        process_file(
            f, abs_path, source_out, header_out, include_paths, public_include_paths
        )