a (not so) mini update
This commit is contained in:
@@ -1,55 +1,41 @@
|
||||
if(NOT DEFINED SRC_DIR OR NOT DEFINED DST_DIR)
|
||||
message(FATAL_ERROR "SRC_DIR and DST_DIR must be defined")
|
||||
if(NOT DEFINED SRC_DIR OR NOT DEFINED DST_DIR OR NOT DEFINED STAMP_FILE)
|
||||
message(FATAL_ERROR "SRC_DIR, DST_DIR, and STAMP_FILE must be defined")
|
||||
endif()
|
||||
|
||||
set(CHARACTERS_DIR "${SRC_DIR}/characters")
|
||||
set(CHARACTERS_ZIP_SCRIPT "${CHARACTERS_DIR}/zip")
|
||||
set(IS_HOST_WINDOWS FALSE)
|
||||
if(CMAKE_HOST_WIN32)
|
||||
set(IS_HOST_WINDOWS TRUE)
|
||||
endif()
|
||||
|
||||
if(EXISTS "${CHARACTERS_ZIP_SCRIPT}" AND NOT IS_HOST_WINDOWS)
|
||||
execute_process(
|
||||
COMMAND "${CHARACTERS_ZIP_SCRIPT}"
|
||||
WORKING_DIRECTORY "${CHARACTERS_DIR}"
|
||||
RESULT_VARIABLE ZIP_SCRIPT_RESULT
|
||||
)
|
||||
if(NOT ZIP_SCRIPT_RESULT EQUAL 0)
|
||||
message(WARNING "Failed running ${CHARACTERS_ZIP_SCRIPT} (exit code ${ZIP_SCRIPT_RESULT}); continuing with existing archives")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
file(REMOVE_RECURSE "${DST_DIR}")
|
||||
file(MAKE_DIRECTORY "${DST_DIR}")
|
||||
|
||||
# Copy all resources except characters/ contents.
|
||||
# Copy all resources except character source folders and any stray character zips.
|
||||
file(COPY "${SRC_DIR}/" DESTINATION "${DST_DIR}"
|
||||
PATTERN "characters/*" EXCLUDE)
|
||||
PATTERN "characters/*" EXCLUDE
|
||||
PATTERN "characters/*.zip" EXCLUDE)
|
||||
|
||||
# Copy only .zip archives from resources/characters.
|
||||
file(MAKE_DIRECTORY "${DST_DIR}/characters")
|
||||
file(GLOB CHARACTER_ZIPS "${CHARACTERS_DIR}/*.zip")
|
||||
if(EXISTS "${CHARACTERS_DIR}")
|
||||
file(GLOB CHILDREN RELATIVE "${CHARACTERS_DIR}" "${CHARACTERS_DIR}/*")
|
||||
foreach(CHILD IN LISTS CHILDREN)
|
||||
set(CHARACTER_SOURCE_DIR "${CHARACTERS_DIR}/${CHILD}")
|
||||
if(NOT IS_DIRECTORY "${CHARACTER_SOURCE_DIR}")
|
||||
continue()
|
||||
endif()
|
||||
|
||||
if(NOT CHARACTER_ZIPS)
|
||||
file(GLOB CHARACTER_FILES RELATIVE "${CHARACTERS_DIR}" "${CHARACTERS_DIR}/*")
|
||||
list(FILTER CHARACTER_FILES EXCLUDE REGEX "^zip$")
|
||||
list(FILTER CHARACTER_FILES EXCLUDE REGEX ".*\\.zip$")
|
||||
file(GLOB_RECURSE CHARACTER_CONTENTS RELATIVE "${CHARACTER_SOURCE_DIR}" "${CHARACTER_SOURCE_DIR}/*")
|
||||
if(NOT CHARACTER_CONTENTS)
|
||||
message(STATUS "Skipping empty character directory: ${CHARACTER_SOURCE_DIR}")
|
||||
continue()
|
||||
endif()
|
||||
|
||||
if(CHARACTER_FILES)
|
||||
execute_process(
|
||||
COMMAND "${CMAKE_COMMAND}" -E tar cf "snivy.zip" --format=zip ${CHARACTER_FILES}
|
||||
WORKING_DIRECTORY "${CHARACTERS_DIR}"
|
||||
COMMAND "${CMAKE_COMMAND}" -E tar cf "${DST_DIR}/characters/${CHILD}.zip" --format=zip ${CHARACTER_CONTENTS}
|
||||
WORKING_DIRECTORY "${CHARACTER_SOURCE_DIR}"
|
||||
RESULT_VARIABLE ZIP_GENERATE_RESULT
|
||||
)
|
||||
if(NOT ZIP_GENERATE_RESULT EQUAL 0)
|
||||
message(WARNING "Failed generating ${CHARACTERS_DIR}/snivy.zip (exit code ${ZIP_GENERATE_RESULT}); continuing without character zip archives")
|
||||
else()
|
||||
file(GLOB CHARACTER_ZIPS "${CHARACTERS_DIR}/*.zip")
|
||||
message(FATAL_ERROR "Failed generating ${DST_DIR}/characters/${CHILD}.zip (exit code ${ZIP_GENERATE_RESULT})")
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
if(CHARACTER_ZIPS)
|
||||
file(COPY ${CHARACTER_ZIPS} DESTINATION "${DST_DIR}/characters")
|
||||
endif()
|
||||
file(WRITE "${STAMP_FILE}" "resources copied\n")
|
||||
|
||||
Reference in New Issue
Block a user