- CitrineOS core extracted (CSMS OCPP 2.0.1) - OpenOCPP extracted (firmware OCPP 1.6J/2.0.1) - ShapeShifter library installed (pip install -e) - ShapeShifter specification extracted - EVerest extracted TODO updated with progress
63 lines
2.7 KiB
CMake
63 lines
2.7 KiB
CMake
function(collect_migration_files)
|
|
set(options "")
|
|
set(oneValueArgs LOCATION INSTALL_DESTINATION)
|
|
set(multiValueArgs "")
|
|
cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
|
|
if(NOT ARG_LOCATION)
|
|
message(FATAL_ERROR "No LOCATION provided, can't parse files")
|
|
endif()
|
|
|
|
if(NOT ${ARG_LOCATION} MATCHES "/$")
|
|
set(ARG_LOCATION "${ARG_LOCATION}/")
|
|
endif()
|
|
|
|
message("Parsing migration files in folder: ${ARG_LOCATION}")
|
|
|
|
file(GLOB MIGRATION_FILE_LIST RELATIVE ${ARG_LOCATION} "${ARG_LOCATION}*.sql") # ARG_LOCATION already contains the slash
|
|
list(SORT MIGRATION_FILE_LIST)
|
|
|
|
# The first file should always start with 1_up so make use of that fact.
|
|
# Next we always check the next number "down" and then "up" which come in order since we sorted alphabetically
|
|
set(CURRENT_MIGRATION_FILE_ID 1)
|
|
set(NEXT_MIGRATION_FILE_TYPE "up")
|
|
|
|
foreach(MIGRATION_FILE ${MIGRATION_FILE_LIST})
|
|
string(REGEX MATCH "^([0-9]+)_(up|down)(|-.+)\.sql$" MIGRATION_FILE_MATCHED ${MIGRATION_FILE})
|
|
if (MIGRATION_FILE_MATCHED STREQUAL "")
|
|
message(FATAL_ERROR "Migration filename does not match specification: " ${MIGRATION_FILE})
|
|
endif()
|
|
|
|
string(CONCAT NEXT_ID "^" ${CURRENT_MIGRATION_FILE_ID} "_")
|
|
if(NOT ${MIGRATION_FILE_MATCHED} MATCHES ${NEXT_ID})
|
|
message(FATAL_ERROR "Skipped migration file ID, expected " ${CURRENT_MIGRATION_FILE_ID} "_*.sql, but got " ${MIGRATION_FILE_MATCHED})
|
|
endif()
|
|
|
|
string(APPEND NEXT_ID ${NEXT_MIGRATION_FILE_TYPE})
|
|
if(NOT ${MIGRATION_FILE_MATCHED} MATCHES ${NEXT_ID})
|
|
message(FATAL_ERROR "Missing " ${NEXT_MIGRATION_FILE_TYPE} " migration file: " ${MIGRATION_FILE_MATCHED})
|
|
endif()
|
|
|
|
if(NEXT_MIGRATION_FILE_TYPE STREQUAL "up")
|
|
math(EXPR CURRENT_MIGRATION_FILE_ID "${CURRENT_MIGRATION_FILE_ID}+1")
|
|
set(NEXT_MIGRATION_FILE_TYPE "down")
|
|
elseif(NEXT_MIGRATION_FILE_TYPE STREQUAL "down")
|
|
set(NEXT_MIGRATION_FILE_TYPE "up")
|
|
endif()
|
|
endforeach()
|
|
|
|
if (NEXT_MIGRATION_FILE_TYPE STREQUAL "up")
|
|
message(FATAL_ERROR "Down migration file " ${CURRENT_MIGRATION_FILE_ID} "_*.sql is missing up migration file")
|
|
endif()
|
|
|
|
# Since we always add on the up file we need to subtract one here
|
|
math(EXPR CURRENT_MIGRATION_FILE_ID "${CURRENT_MIGRATION_FILE_ID}-1")
|
|
|
|
list(TRANSFORM MIGRATION_FILE_LIST PREPEND ${ARG_LOCATION})
|
|
if(ARG_INSTALL_DESTINATION)
|
|
install(FILES ${MIGRATION_FILE_LIST} DESTINATION ${ARG_INSTALL_DESTINATION})
|
|
endif()
|
|
|
|
set(TARGET_MIGRATION_FILE_VERSION ${CURRENT_MIGRATION_FILE_ID} PARENT_SCOPE)
|
|
set(MIGRATION_FILE_LIST ${MIGRATION_FILE_LIST} PARENT_SCOPE)
|
|
endfunction() |