#!/usr/bin/env python3

import os
import shutil
import subprocess

from upstream_utils import (
    get_repo_root,
    clone_repo,
    walk_cwd_and_copy_if,
    git_am,
)


def main():
    upstream_root = clone_repo("https://github.com/ludocode/mpack", "v1.1.1")
    wpilib_root = get_repo_root()
    wpiutil = os.path.join(wpilib_root, "wpiutil")

    # Delete old install
    for d in [
        "src/main/native/thirdparty/mpack/src",
        "src/main/native/thirdparty/mpack/include",
    ]:
        shutil.rmtree(os.path.join(wpiutil, d), ignore_errors=True)

    # Apply patches to upstream Git repo
    os.chdir(upstream_root)

    for f in [
        "0001-Don-t-emit-inline-defs.patch",
        "0002-Update-amalgamation-script.patch",
        "0003-Use-namespace-for-C.patch",
        "0004-Group-doxygen-into-MPack-module.patch",
    ]:
        git_am(
            os.path.join(wpilib_root, "upstream_utils/mpack_patches", f),
        )

    # Run the amalgmation script
    subprocess.check_call(["bash", "tools/amalgamate.sh"])

    # Copy the files
    amalgamation_source_dir = os.path.join(
        ".", ".build", "amalgamation", "src", "mpack"
    )
    os.chdir(amalgamation_source_dir)

    walk_cwd_and_copy_if(
        lambda dp, f: f.endswith(".h"),
        os.path.join(wpiutil, "src/main/native/thirdparty/mpack/include/wpi"),
    )
    walk_cwd_and_copy_if(
        lambda dp, f: f.endswith(".c"),
        os.path.join(wpiutil, "src/main/native/thirdparty/mpack/src"),
    )


if __name__ == "__main__":
    main()
