|
|
|
|
@@ -17,10 +17,13 @@ endfunction()
|
|
|
|
|
|
|
|
|
|
# Fonction pour incrémenter la version SemVer
|
|
|
|
|
function(increment_version CURRENT_VERSION TYPE OUT_VAR)
|
|
|
|
|
string(REPLACE "." ";" VERSION_LIST ${CURRENT_VERSION})
|
|
|
|
|
list(GET VERSION_LIST 0 MAJOR)
|
|
|
|
|
list(GET VERSION_LIST 1 MINOR)
|
|
|
|
|
list(GET VERSION_LIST 2 PATCH)
|
|
|
|
|
if(CURRENT_VERSION MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)")
|
|
|
|
|
set(MAJOR ${CMAKE_MATCH_1})
|
|
|
|
|
set(MINOR ${CMAKE_MATCH_2})
|
|
|
|
|
set(PATCH ${CMAKE_MATCH_3})
|
|
|
|
|
else()
|
|
|
|
|
message(FATAL_ERROR "Format de version invalide: ${CURRENT_VERSION}. Attendu: X.Y.Z")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
if("${TYPE}" STREQUAL "MAJOR")
|
|
|
|
|
math(EXPR MAJOR "${MAJOR} + 1")
|
|
|
|
|
@@ -70,40 +73,42 @@ function(set_new_version NEW_VERSION)
|
|
|
|
|
endif()
|
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
|
|
# Demander à l'utilisateur s'il veut tagger (ou le faire par défaut si spécifié)
|
|
|
|
|
# Créer le tag git
|
|
|
|
|
create_git_tag(${NEW_VERSION})
|
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
|
|
# Logique principale
|
|
|
|
|
set(ARG_OFFSET 0)
|
|
|
|
|
while(ARG_OFFSET LESS CMAKE_ARGC)
|
|
|
|
|
if("${CMAKE_ARGV${ARG_OFFSET}}" STREQUAL "-P")
|
|
|
|
|
math(EXPR COMMAND_INDEX "${ARG_OFFSET} + 2")
|
|
|
|
|
math(EXPR VERSION_INDEX "${ARG_OFFSET} + 3")
|
|
|
|
|
break()
|
|
|
|
|
if(CMAKE_SCRIPT_MODE_FILE STREQUAL CMAKE_CURRENT_LIST_FILE)
|
|
|
|
|
set(ARG_OFFSET 0)
|
|
|
|
|
while(ARG_OFFSET LESS CMAKE_ARGC)
|
|
|
|
|
if("${CMAKE_ARGV${ARG_OFFSET}}" STREQUAL "-P")
|
|
|
|
|
math(EXPR COMMAND_INDEX "${ARG_OFFSET} + 2")
|
|
|
|
|
math(EXPR VERSION_INDEX "${ARG_OFFSET} + 3")
|
|
|
|
|
break()
|
|
|
|
|
endif()
|
|
|
|
|
math(EXPR ARG_OFFSET "${ARG_OFFSET} + 1")
|
|
|
|
|
endwhile()
|
|
|
|
|
|
|
|
|
|
if(NOT DEFINED COMMAND_INDEX OR COMMAND_INDEX GREATER_EQUAL CMAKE_ARGC)
|
|
|
|
|
message(FATAL_ERROR "Usage: cmake -P version.cmake [GET|SET|PATCH|MINOR|MAJOR] [new_version]")
|
|
|
|
|
endif()
|
|
|
|
|
math(EXPR ARG_OFFSET "${ARG_OFFSET} + 1")
|
|
|
|
|
endwhile()
|
|
|
|
|
|
|
|
|
|
if(NOT DEFINED COMMAND_INDEX OR COMMAND_INDEX GREATER_EQUAL CMAKE_ARGC)
|
|
|
|
|
message(FATAL_ERROR "Usage: cmake -P version.cmake [GET|SET|PATCH|MINOR|MAJOR] [new_version]")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
set(COMMAND "${CMAKE_ARGV${COMMAND_INDEX}}")
|
|
|
|
|
|
|
|
|
|
if("${COMMAND}" STREQUAL "GET")
|
|
|
|
|
get_current_version(VERSION)
|
|
|
|
|
message("${VERSION}")
|
|
|
|
|
elseif("${COMMAND}" STREQUAL "SET")
|
|
|
|
|
if(VERSION_INDEX GREATER_EQUAL CMAKE_ARGC)
|
|
|
|
|
message(FATAL_ERROR "Veuillez spécifier la nouvelle version: cmake -P version.cmake SET 0.0.0")
|
|
|
|
|
|
|
|
|
|
set(COMMAND "${CMAKE_ARGV${COMMAND_INDEX}}")
|
|
|
|
|
|
|
|
|
|
if("${COMMAND}" STREQUAL "GET")
|
|
|
|
|
get_current_version(VERSION)
|
|
|
|
|
message("${VERSION}")
|
|
|
|
|
elseif("${COMMAND}" STREQUAL "SET")
|
|
|
|
|
if(VERSION_INDEX GREATER_EQUAL CMAKE_ARGC)
|
|
|
|
|
message(FATAL_ERROR "Veuillez spécifier la nouvelle version: cmake -P version.cmake SET 0.0.0")
|
|
|
|
|
endif()
|
|
|
|
|
set(NEW_VERSION "${CMAKE_ARGV${VERSION_INDEX}}")
|
|
|
|
|
set_new_version("${NEW_VERSION}")
|
|
|
|
|
elseif("${COMMAND}" MATCHES "^(PATCH|MINOR|MAJOR)$")
|
|
|
|
|
get_current_version(CURRENT_VERSION)
|
|
|
|
|
increment_version("${CURRENT_VERSION}" "${COMMAND}" NEW_VERSION)
|
|
|
|
|
set_new_version("${NEW_VERSION}")
|
|
|
|
|
else()
|
|
|
|
|
message(FATAL_ERROR "Commande inconnue: ${COMMAND}. Utilisez GET, SET, PATCH, MINOR ou MAJOR.")
|
|
|
|
|
endif()
|
|
|
|
|
set(NEW_VERSION "${CMAKE_ARGV${VERSION_INDEX}}")
|
|
|
|
|
set_new_version("${NEW_VERSION}")
|
|
|
|
|
elseif("${COMMAND}" MATCHES "^(PATCH|MINOR|MAJOR)$")
|
|
|
|
|
get_current_version(CURRENT_VERSION)
|
|
|
|
|
increment_version("${CURRENT_VERSION}" "${COMMAND}" NEW_VERSION)
|
|
|
|
|
set_new_version("${NEW_VERSION}")
|
|
|
|
|
else()
|
|
|
|
|
message(FATAL_ERROR "Commande inconnue: ${COMMAND}. Utilisez GET, SET, PATCH, MINOR ou MAJOR.")
|
|
|
|
|
endif()
|
|
|
|
|
|