# === This file is part of Calamares - <https://calamares.io> ===
#
#   SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
#   SPDX-License-Identifier: BSD-2-Clause
#

# Install "slideshows" and other QML-sources for Calamares.
#
# In practice, in the central source repositoy, this means
# just-install-the-slideshow-example. For alternative slideshows,
# see the approach in the calamares-extensions repository.

# Iterate over all the subdirectories which have a qmldir file, copy them over to the build dir,
# and install them into share/calamares/qml/calamares
file(GLOB SUBDIRECTORIES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*")
foreach(SUBDIRECTORY ${SUBDIRECTORIES})
    if(
        IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}"
        AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/qmldir"
    )
        set(QML_DIR share/calamares/qml)
        set(QML_MODULE_DESTINATION ${QML_DIR}/calamares/${SUBDIRECTORY})

        # We glob all the files inside the subdirectory, and we make sure they are
        # synced with the bindir structure and installed.
        file(
            GLOB QML_MODULE_FILES
            RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}
            "${SUBDIRECTORY}/*"
        )
        foreach(QML_MODULE_FILE ${QML_MODULE_FILES})
            if(
                NOT
                    IS_DIRECTORY
                        ${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/${QML_MODULE_FILE}
            )
                configure_file(
                    ${SUBDIRECTORY}/${QML_MODULE_FILE}
                    ${SUBDIRECTORY}/${QML_MODULE_FILE}
                    COPYONLY
                )

                install(
                    FILES
                        ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/${QML_MODULE_FILE}
                    DESTINATION ${QML_MODULE_DESTINATION}
                )
            endif()
        endforeach()

        message(
            "-- ${BoldYellow}Configured QML module: ${BoldRed}calamares.${SUBDIRECTORY}${ColorReset}"
        )
    endif()
endforeach()

message("")
