# SPDX-FileCopyrightText: 2026 Christian Tosta
# SPDX-License-Identifier: GPL-2.0-or-later
#
# @file CMakeLists.txt
# @brief Main CMake configuration for multi-distribution pyenv packaging.

cmake_minimum_required(VERSION 3.24)
project(pyenv-packaging NONE)

file(READ "${CMAKE_CURRENT_SOURCE_DIR}/metadata.json" METADATA_JSON)
string(JSON PYENV_VERSION GET ${METADATA_JSON} "version")
string(JSON PYENV_URL GET ${METADATA_JSON} "source_url")
string(REPLACE "\${self.version}" "${PYENV_VERSION}" PYENV_URL "${PYENV_URL}")

include(ExternalProject)

ExternalProject_Add(pyenv_upstream
    URL ${PYENV_URL}
    DOWNLOAD_EXTRACT_TIMESTAMP TRUE
    CONFIGURE_COMMAND ""
    BUILD_COMMAND ""
    INSTALL_COMMAND ""
    PATCH_COMMAND sh -c "find <SOURCE_DIR> \\( -name .git\\* \\) -exec rm -rf {} +"
)

set(PYENV_SRC_UPSTREAM "${CMAKE_CURRENT_BINARY_DIR}/pyenv_upstream-prefix/src/pyenv_upstream")
set(PYENV_SRC "${CMAKE_CURRENT_SOURCE_DIR}/pyenv")

add_custom_target(merge_upstream ALL
    COMMAND ${CMAKE_COMMAND} -E copy_directory "${PYENV_SRC_UPSTREAM}" "${PYENV_SRC}"
    DEPENDS pyenv_upstream
)

include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/CPackRules.cmake)

install(DIRECTORY ${PYENV_SRC}/bin ${PYENV_SRC}/libexec ${PYENV_SRC}/plugins ${PYENV_SRC}/pyenv.d
        DESTINATION ${PACKAGE_PREFIX}/share/pyenv)

install(DIRECTORY ${PYENV_SRC}/man DESTINATION ${PACKAGE_PREFIX}/share)

install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${PACKAGE_PREFIX}/share/pyenv/versions\")")
install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${PACKAGE_PREFIX}/share/pyenv/shims\")")
install(CODE "file(MAKE_DIRECTORY \"\$ENV{DESTDIR}${PACKAGE_PREFIX}/share/pyenv/hooks\")")

install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/pyenv.sh"
        DESTINATION /etc/profile.d
        PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
