Warning, /utilities/telly-skout/QmlFormat.cmake is written in an unsupported language. File is not indexed.

0001 # SPDX-FileCopyrightText: 2022 Plata Hill <plata.hill@kdemail.net>
0002 # SPDX-License-Identifier: BSD-2-Clause
0003 
0004 #[=======================================================================[.rst:
0005 QmlFormat
0006 --------------------
0007 
0008 This module provides a functionality to format the qml
0009 code of your repository according to the QML Coding Conventions.
0010 
0011 This module provides the following function:
0012 
0013 ::
0014 
0015   qml_format(<files>)
0016 
0017 Using this function will create a qml-format target that will format all
0018 ``<files>`` passed to the function according to the QML Coding Conventions.
0019 To format the files you have to invoke the target with ``make qml-format`` or ``ninja qml-format``.
0020 Once the project is formatted, it is recommended to enforce the formatting using a pre-commit hook,
0021 this can be done using :kde-module:`KDEGitCommitHooks`.
0022 
0023 Example usage:
0024 
0025 .. code-block:: cmake
0026 
0027   include(QmlFormat)
0028   file(GLOB_RECURSE ALL_QML_FORMAT_SOURCE_FILES *.qml)
0029   qml_format(${ALL_QML_FORMAT_SOURCE_FILES})
0030 
0031 #]=======================================================================]
0032 
0033 # try to find qml-format in path
0034 find_program(QML_FORMAT_EXECUTABLE qmlformat)
0035 
0036 # formatting target
0037 function(QML_FORMAT)
0038     if (TARGET qml-format)
0039         message(WARNING "the qml_format function was already called")
0040         return()
0041     endif()
0042 
0043     # add target without specific commands first, we add the real calls file-per-file to avoid command line length issues
0044     add_custom_target(qml-format COMMENT "Formatting qml files in ${CMAKE_CURRENT_SOURCE_DIR} with ${QML_FORMAT_EXECUTABLE}...")
0045 
0046     # run qml-format only if available, else signal the user what is missing
0047     if(QML_FORMAT_EXECUTABLE)
0048         get_filename_component(_binary_dir ${CMAKE_BINARY_DIR} REALPATH)
0049         foreach(_file ${ARGV})
0050             # check if the file is inside the build directory => ignore such files
0051             get_filename_component(_full_file_path ${_file} REALPATH)
0052             string(FIND ${_full_file_path} ${_binary_dir} _index)
0053             if(NOT _index EQUAL 0)
0054                 add_custom_command(TARGET qml-format
0055                     COMMAND
0056                         ${QML_FORMAT_EXECUTABLE}
0057                         -i
0058                         ${_full_file_path}
0059                     WORKING_DIRECTORY
0060                         ${CMAKE_CURRENT_SOURCE_DIR}
0061                     COMMENT
0062                         "Formatting ${_full_file_path}..."
0063                     )
0064             endif()
0065         endforeach()
0066     else()
0067         add_custom_command(TARGET qml-format
0068             COMMAND
0069                 ${CMAKE_COMMAND} -E echo "Could not set up the qml-format target as the qml-format executable is missing."
0070             )
0071     endif()
0072 endfunction()