from conans import ConanFile, CMake, tools


class CaosdbConan(ConanFile):
    name = "caosdb"
    version = "0.0.2"
    license = "AGPL-3.0-or-later"
    author = "Timm C. Fitschen <t.fitschen@indiscale.com>"
    url = "https://gitlab.indiscale.com/caosdb/src/caosdb-cpplib.git"
    description = "C++ library for the CaosDB project"
    topics = ("data management", "caosdb")
    settings = "os", "compiler", "build_type", "arch"
    options = {"shared": [True, False], "fPIC": [True, False]}
    default_options = {"shared": False, "fPIC": True}
    generators = "cmake"
    requires = [("boost/1.76.0"), ("gtest/1.11.0"), ("grpc/1.38.0")]
    exports = "*.cpp", "*h", "*.cmake", "*CMakeLists.txt", "*.in", "*.proto"
    exports_sources = "src", "doc", "include", "test", "cmake", "proto"

    def config_options(self):
        if self.settings.os == "Windows":
            del self.options.fPIC

    # def source(self):
        # self.run("git clone https://gitlab.indiscale.com/caosdb/src/caosdb-cpplib.git")
        # self.run("cd caosdb-cpplib && git submodule update --init")

    def imports(self):
        self.copy("protoc*", "build_tools", "bin")
        self.copy("grpc_cpp_plugin", "build_tools", "bin")

    def build(self):
        cmake = CMake(self)
        cmake.configure(source_folder="")
        cmake.build()

        # Explicit way:
        # self.run('cmake %s/hello %s'
        #          % (self.source_folder, cmake.command_line))
        # self.run("cmake --build . %s" % cmake.build_config)

    def package(self):
        self.copy("*.h", dst="include", src="include")
        self.copy("*.dll", dst="bin", keep_path=False)
        self.copy("*.so", dst="lib", keep_path=False)
        self.copy("*.dylib", dst="lib", keep_path=False)
        self.copy("*.a", dst="lib", keep_path=False)

    def package_info(self):
        self.cpp_info.libs = ["caosdb", "caosdb_info_v1alpha1"]