cmake_minimum_required(VERSION 3.20)
project(Adminive VERSION 1.0.0 LANGUAGES CXX)
include(CTest)
option(ADMINIVE_ENABLE_REAL_DROGON_TESTS "Build and run release gates against installed Drogon" OFF)
if(ADMINIVE_ENABLE_REAL_DROGON_TESTS)
    find_package(nlohmann_json 3.12.0 CONFIG REQUIRED)
    find_package(Drogon CONFIG REQUIRED)
endif()
include("${CMAKE_CURRENT_LIST_DIR}/cmake/AdminiveVerification.cmake")
add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/third_party/Structive")
add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/backend")
set(adminive_package_includes
        "/.agents/"
        "/.gitignore"
        "/AGENTS.md"
        "/backend/"
        "/cmake/"
        "/config/"
        "/CMakeLists.txt"
        "/frontend/"
        "/install_consumer/"
        "/README.md"
        "/RELEASE.md"
        "/THIRD_PARTY_NOTICES.md"
        "/scripts/"
        "/third_party/"
)
set(adminive_package_excludes
        "/.git/"
        "/third_party/Structive/.git/"
        "/.idea/"
        "/build/"
        "/cmake-build-*/"
        "/doc/"
        "/node_modules/"
        "/frontend/frontend.zip"
        "/frontend/node_modules/"
        "/frontend_dist/"
        "/verification/"
        "/frontend/playwright-report/"
        "/frontend/test-results/"
        "*.tsbuildinfo"
        "*.zip"
)
include("${CMAKE_CURRENT_LIST_DIR}/cmake/PackageZip.cmake")
add_project_zip_target(package_zip "${CMAKE_CURRENT_LIST_DIR}/Adminive.zip" "${CMAKE_CURRENT_LIST_DIR}" adminive_package_includes adminive_package_excludes)
if(BUILD_TESTING)
    add_test(NAME Adminive_Install_Consumer_Test COMMAND "${CMAKE_COMMAND}" "-DADMINIVE_BINARY_DIR=${CMAKE_BINARY_DIR}" "-DADMINIVE_CONFIG=$<CONFIG>" -P "${CMAKE_CURRENT_LIST_DIR}/cmake/RunInstallConsumer.cmake")
    set_tests_properties(Adminive_Install_Consumer_Test PROPERTIES LABELS "install;package")
    if(ADMINIVE_ENABLE_REAL_DROGON_TESTS)
        add_test(NAME Adminive_Real_Drogon_Install_Consumer_Test COMMAND "${CMAKE_COMMAND}" "-DADMINIVE_BINARY_DIR=${CMAKE_BINARY_DIR}" "-DADMINIVE_CONFIG=$<CONFIG>" "-DDrogon_DIR=${Drogon_DIR}" "-Dnlohmann_json_DIR=${nlohmann_json_DIR}" -P "${CMAKE_CURRENT_LIST_DIR}/cmake/RunRealDrogonInstallConsumer.cmake")
        set_tests_properties(Adminive_Real_Drogon_Install_Consumer_Test PROPERTIES LABELS "install;package;drogon;real-dependency;release")
    endif()
    add_test(NAME Adminive_Package_Zip_Test COMMAND "${CMAKE_COMMAND}" "-DADMINIVE_BINARY_DIR=${CMAKE_BINARY_DIR}" "-DADMINIVE_CONFIG=$<CONFIG>" -P "${CMAKE_CURRENT_LIST_DIR}/cmake/RunPackageZipTest.cmake")
    set_tests_properties(Adminive_Package_Zip_Test PROPERTIES LABELS "package;archive")
    adminive_register_frontend_tests("${CMAKE_BINARY_DIR}" "$<CONFIG>")
endif()
