opt: replace lua_pop to lua_pushvalue
[liba.git] / cmake / FindStyLua.cmake
blobcb5d1d461c3489e7bed3ec4dff8e88da73a17868
1 #.rst:
2 # FindStyLua
3 # ----------
5 # Find stylua executable.
7 # Result Variables
8 # ^^^^^^^^^^^^^^^^
10 # This module defines the following variables:
12 # ``STYLUA_FOUND``
14 # ``STYLUA_EXECUTABLE``
16 # ``STYLUA_VERSION``
18 # Functions
19 # ^^^^^^^^^
21 # .. command:: add_stylua
23 #   ::
25 #     add_stylua(target [VERBOSE]
26 #         [WORKING_DIRECTORY dir] [COMMENT comment] [CONFIG cfg]
27 #         [OPTIONS opt ...] [SOURCES src ...] [src ...]
28 #     )
30 include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
31 find_program(STYLUA_EXECUTABLE NAMES stylua)
32 mark_as_advanced(STYLUA_EXECUTABLE)
34 if(EXISTS "${STYLUA_EXECUTABLE}")
35   execute_process(COMMAND ${STYLUA_EXECUTABLE} --version OUTPUT_VARIABLE STYLUA_VERSION)
36   string(REGEX REPLACE "stylua ([^\n ]+).*" "\\1" STYLUA_VERSION "${STYLUA_VERSION}")
37 endif()
39 find_package_handle_standard_args(StyLua
40   FOUND_VAR
41     STYLUA_FOUND
42   REQUIRED_VARS
43     STYLUA_EXECUTABLE
44   VERSION_VAR
45     STYLUA_VERSION
48 if(STYLUA_FOUND)
49   function(add_stylua target)
50     cmake_parse_arguments(STYLUA "VERBOSE" "WORKING_DIRECTORY;COMMENT;CONFIG" "OPTIONS;SOURCES" ${ARGN})
51     list(APPEND STYLUA_SOURCES ${STYLUA_UNPARSED_ARGUMENTS})
52     if(STYLUA_VERBOSE)
53       list(INSERT STYLUA_OPTIONS 0 --verbose)
54     endif()
55     if(EXISTS "${STYLUA_CONFIG}")
56       list(APPEND STYLUA_OPTIONS --config-path ${STYLUA_CONFIG})
57     endif()
58     if(NOT STYLUA_WORKING_DIRECTORY)
59       set(STYLUA_WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
60     endif()
61     if(NOT STYLUA_COMMENT)
62       set(STYLUA_COMMENT "Formatting ${target} using stylua")
63     endif()
64     add_custom_target(${target} # https://github.com/JohnnyMorganz/StyLua
65       ${STYLUA_EXECUTABLE} ${STYLUA_OPTIONS} -- ${STYLUA_SOURCES}
66       WORKING_DIRECTORY ${STYLUA_WORKING_DIRECTORY}
67       COMMENT "${STYLUA_COMMENT}"
68     )
69   endfunction()
70 endif()