import os
import subprocess

from setuptools import setup
from setuptools.command.build_py import build_py

COMMON_VERSION = "5.0.1"
SETUP_PATH = os.path.abspath(__file__)
COMMON_EXPORTS_PATH = os.path.abspath(os.path.join(SETUP_PATH, "../../../exports"))


class CommonBuild(build_py):
    def run(self):
        if os.environ.get("EDUVPN_COMMON_BUILD_SO", "0") == "1":
            try:
                subprocess.run(
                    [
                        "go",
                        "build",
                        "-o",
                        f"eduvpn_common/lib/libeduvpn_common-{COMMON_VERSION}.so",
                        "-buildmode=c-shared",
                        COMMON_EXPORTS_PATH,
                    ],
                    env={**os.environ, "CGO_ENABLED": "1"},
                    check=True,
                    capture_output=True,
                    text=True,
                )
            except subprocess.CalledProcessError as e:
                print("eduvpn-common build failed with exit code:", e.returncode)
                print("standard output:", e.stdout)
                print("error output:", e.stderr)
                raise
        super().run()


setup(cmdclass={"build_py": CommonBuild})
