#!/usr/bin/env python

import pathlib
import subprocess
import sys

import buildconfig

from protoc_wrapper import protoc_binary

TOPSRCDIR = pathlib.Path(buildconfig.topsrcdir)


def run_protoc(*protos, cpp_out=".", includes=[]):
    subprocess.run(
        [
            protoc_binary(sys.argv[1] if len(sys.argv) > 1 else None),
            *[f"-I{TOPSRCDIR / include}" for include in includes],
            *["--cpp_out", TOPSRCDIR / cpp_out],
            *protos,
        ],
        check=True,
    )


if __name__ == "__main__":
    run_protoc(
        "CoreDump.proto",
        cpp_out="devtools/shared/heapsnapshot",
        includes=["devtools/shared/heapsnapshot"],
    )
    run_protoc(
        "csd.proto",
        cpp_out="toolkit/components/reputationservice/chromium/chrome/common/safe_browsing",
        includes=["toolkit/components/reputationservice/chromium/chrome/common/safe_browsing"],
    )
    run_protoc(
        "safebrowsing.proto",
        cpp_out="toolkit/components/url-classifier/chromium/",
        includes=["toolkit/components/url-classifier/chromium/"],
    )
    run_protoc(
        "safebrowsing_v5.proto",
        cpp_out="toolkit/components/url-classifier/chromium/",
        includes=["toolkit/components/url-classifier/chromium/"],
    )
    run_protoc(
        "cookieBanner.proto",
        cpp_out="toolkit/components/cookiebanners/",
        includes=["toolkit/components/cookiebanners/"],
    )
    run_protoc(
        "analysis.proto",
        cpp_out="toolkit/components/contentanalysis/content_analysis/sdk/",
        includes=["third_party/content_analysis_sdk/proto/content_analysis/sdk"],
    )
    run_protoc(
        "fetch_msg_types.proto",
        cpp_out="toolkit/components/viaduct/",
        includes=["third_party/rust/viaduct/src"],
    )
