# --- Documentation build (Antora) ---

if(NINBOT_BUILD_DOCS)
    find_program(ANTORA_EXECUTABLE npx)
    if(ANTORA_EXECUTABLE)
        add_custom_target(docs ALL
            COMMAND ${ANTORA_EXECUTABLE} antora antora-playbook.yml
            WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/playbook
            COMMENT "Building Nindocs with Antora"
            VERBATIM
        )
    else()
        message(WARNING "npx not found — cannot build documentation. Install Node.js to enable.")
    endif()
endif()

# --- Example programs (registered as tests) ---

if(NINBOT_BUILD_EXAMPLES)
    function(add_tutorial TUTORIAL_PATH TARGET_NAME)
        set(SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/antora/modules/${TUTORIAL_PATH})
        set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/examples/${TARGET_NAME})

        add_custom_target(${TARGET_NAME} ALL
            COMMAND ${CMAKE_COMMAND}
                -S ${SOURCE_DIR}
                -B ${BUILD_DIR}
                -G ${CMAKE_GENERATOR}
                -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
                -DCMAKE_PREFIX_PATH=${PROJECT_BINARY_DIR}
            COMMAND ${CMAKE_COMMAND}
                --build ${BUILD_DIR}
            COMMENT "Building ${TARGET_NAME}"
            VERBATIM
            DEPENDS ninbot
        )

        add_test(
            NAME ${TARGET_NAME}
            COMMAND ${BUILD_DIR}/${TARGET_NAME}
        )
    endfunction()

    function(add_mujoco_tutorial TUTORIAL_PATH TARGET_NAME EXECUTABLE_NAME)
        set(SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/antora/modules/${TUTORIAL_PATH})
        set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/examples/${TARGET_NAME})

        add_custom_target(${TARGET_NAME} ALL
            COMMAND ${CMAKE_COMMAND}
                -S ${SOURCE_DIR}
                -B ${BUILD_DIR}
                -G ${CMAKE_GENERATOR}
                -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
                -DCMAKE_PREFIX_PATH=${PROJECT_BINARY_DIR}
                -DCMAKE_MODULE_PATH=${CMAKE_SOURCE_DIR}/cmake
                -DMUJOCO_ROOT=${MUJOCO_ROOT}
            COMMAND ${CMAKE_COMMAND}
                --build ${BUILD_DIR}
            COMMENT "Building ${TARGET_NAME}"
            VERBATIM
            DEPENDS ninbot
        )

        add_test(
            NAME ${TARGET_NAME}
            COMMAND ${BUILD_DIR}/${EXECUTABLE_NAME}
            WORKING_DIRECTORY ${BUILD_DIR}
        )
    endfunction()

    add_tutorial( units/examples/tutorial-units                     units                       )
    add_tutorial( pos/examples/tutorial-101-points-translations     points-translations         )
    add_tutorial( pos/examples/tutorial-102-orientations-rotations  orientations-rotations      )
    add_tutorial( pos/examples/tutorial-103-coordinate-systems      coordinate-systems          )
    add_tutorial( pos/examples/tutorial-104-values-qtys-tfs         coordinate-transformations  )
    add_tutorial( pos/examples/tutorial-105-kinematic-trees         kinematic-trees             )
    add_tutorial( pos/examples/tutorial-301-interpolated-backend   interpolated-backend        )
    if(NINBOT_BUILD_MUJOCO_TESTS)
    add_mujoco_tutorial( pos/examples/tutorial-203-ball-race        ball-race-tutorial ball-race)
    endif()
endif()
