Оптимизация работы с загружаемым содержимым из git

This commit is contained in:
Andrei Astafev 2023-08-04 10:16:31 +03:00
parent 81d61deb9b
commit 81f5bbbd1e

View File

@ -7,7 +7,8 @@ myx_download_content
myx_download_content(NAME myx_download_content(NAME
[ DOWNLOAD_DIR dir ] | [ DOWNLOAD_DIR dir ] |
[ GIT_REPOSITORY url ] | [ GIT_REPOSITORY url ] |
[ GIT_TAG tag ] ) [ GIT_TAG tag ] |
[ AUTOFETCH ] | [ AUTOPULL ] )
Обязательный параметр: `NAME` - имя целевого каталога. Обязательный параметр: `NAME` - имя целевого каталога.
Параметр `DOWNLOAD_DIR` содержит имя каталога, в который будет загружаться Параметр `DOWNLOAD_DIR` содержит имя каталога, в который будет загружаться
@ -16,8 +17,10 @@ myx_download_content
загрузить с помощью git. загрузить с помощью git.
Параметр `GIT_TAG` содержит используемые метку, идентификатор коммита или Параметр `GIT_TAG` содержит используемые метку, идентификатор коммита или
ветку в загружаемом репозитории. ветку в загружаемом репозитории.
Если указана опция `AUTOPULL`, то загруженный репозиторий будет Если указана опция `AUTOFETCH`, то на этапе конфигурирования для загруженного
обновляться автоматически. репозитория будут скачиваться изменения.
Если указана опция `AUTOPULL`, то на этапе конфигурирования из загруженного
репозитория будет изменяться рабочий каталог.
#]=======================================================================] #]=======================================================================]
@ -26,7 +29,7 @@ find_package(Git QUIET)
option(ENABLE_DOWNLOAD_CONTENT "Enable download content" ON) option(ENABLE_DOWNLOAD_CONTENT "Enable download content" ON)
function(myx_download_content NAME) function(myx_download_content NAME)
set(options AUTOPULL) set(options AUTOFETCH AUTOPULL)
set(oneValueArgs) set(oneValueArgs)
set(multiValueArgs DOWNLOAD_DIR GIT_REPOSITORY GIT_TAG) set(multiValueArgs DOWNLOAD_DIR GIT_REPOSITORY GIT_TAG)
cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
@ -61,9 +64,11 @@ function(myx_download_content NAME)
execute_process(COMMAND ${GIT_EXECUTABLE} clone ${ARG_GIT_REPOSITORY} ${NAME} execute_process(COMMAND ${GIT_EXECUTABLE} clone ${ARG_GIT_REPOSITORY} ${NAME}
WORKING_DIRECTORY ${ARG_DOWNLOAD_DIR}) WORKING_DIRECTORY ${ARG_DOWNLOAD_DIR})
else() else()
if(ARG_AUTOFETCH)
execute_process(COMMAND ${GIT_EXECUTABLE} fetch execute_process(COMMAND ${GIT_EXECUTABLE} fetch
WORKING_DIRECTORY ${WORK_DIR}) WORKING_DIRECTORY ${WORK_DIR})
endif() endif()
endif()
if(ARG_GIT_TAG) if(ARG_GIT_TAG)
execute_process(COMMAND ${GIT_EXECUTABLE} checkout ${ARG_GIT_TAG} execute_process(COMMAND ${GIT_EXECUTABLE} checkout ${ARG_GIT_TAG}
WORKING_DIRECTORY ${WORK_DIR}) WORKING_DIRECTORY ${WORK_DIR})