Files
bun.sh/cmake/tools/SetupGit.cmake
2024-10-03 00:00:32 -07:00

65 lines
1.3 KiB
CMake

find_command(
VARIABLE
GIT_PROGRAM
COMMAND
git
REQUIRED
OFF
)
if(NOT GIT_PROGRAM)
return()
endif()
set(GIT_MERGEBASE_COMMAND ${GIT_PROGRAM} merge-base origin/main HEAD)
execute_process(
COMMAND
${GIT_MERGEBASE_COMMAND}
WORKING_DIRECTORY
${CWD}
OUTPUT_STRIP_TRAILING_WHITESPACE
OUTPUT_VARIABLE
GIT_MERGEBASE
ERROR_STRIP_TRAILING_WHITESPACE
ERROR_VARIABLE
GIT_MERGEBASE_ERROR
RESULT_VARIABLE
GIT_MERGEBASE_RESULT
)
if(NOT GIT_MERGEBASE_RESULT EQUAL 0)
message(${WARNING} "Command failed: ${GIT_MERGEBASE_COMMAND} ${GIT_MERGEBASE_ERROR}")
return()
endif()
set(GIT_DIFF_COMMAND ${GIT_PROGRAM} diff --no-color --name-only --diff-filter=AMCR ${GIT_MERGEBASE} HEAD)
execute_process(
COMMAND
${GIT_DIFF_COMMAND}
WORKING_DIRECTORY
${CWD}
OUTPUT_STRIP_TRAILING_WHITESPACE
OUTPUT_VARIABLE
GIT_DIFF
ERROR_STRIP_TRAILING_WHITESPACE
ERROR_VARIABLE
GIT_DIFF_ERROR
RESULT_VARIABLE
GIT_DIFF_RESULT
)
if(NOT GIT_DIFF_RESULT EQUAL 0)
message(${WARNING} "Command failed: ${GIT_DIFF_COMMAND} ${GIT_DIFF_ERROR}")
return()
endif()
string(REPLACE "\n" ";" GIT_CHANGED_SOURCES "${GIT_DIFF}")
if(CI)
setx(GIT_CHANGED_SOURCES ${GIT_CHANGED_SOURCES})
endif()
list(TRANSFORM GIT_CHANGED_SOURCES PREPEND ${CWD}/)
list(LENGTH GIT_CHANGED_SOURCES GIT_CHANGED_SOURCES_COUNT)