feat(versioning): add support for SemVer increment commands (PATCH, MINOR, MAJOR) in version script
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
# version.cmake - Script pour gérer la version SemVer de manière centralisée
|
# version.cmake - Script pour gérer la version SemVer de manière centralisée
|
||||||
|
|
||||||
# Usage: cmake -P version.cmake [GET|SET] [new_version]
|
# Usage: cmake -P version.cmake [GET|SET|PATCH|MINOR|MAJOR] [new_version]
|
||||||
|
|
||||||
set(PACKAGE_JSON_FILES
|
set(PACKAGE_JSON_FILES
|
||||||
"${CMAKE_CURRENT_LIST_DIR}/package.json"
|
"${CMAKE_CURRENT_LIST_DIR}/package.json"
|
||||||
@@ -15,6 +15,27 @@ function(get_current_version OUT_VAR)
|
|||||||
set(${OUT_VAR} ${CURRENT_VERSION} PARENT_SCOPE)
|
set(${OUT_VAR} ${CURRENT_VERSION} PARENT_SCOPE)
|
||||||
endfunction()
|
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("${TYPE}" STREQUAL "MAJOR")
|
||||||
|
math(EXPR MAJOR "${MAJOR} + 1")
|
||||||
|
set(MINOR 0)
|
||||||
|
set(PATCH 0)
|
||||||
|
elseif("${TYPE}" STREQUAL "MINOR")
|
||||||
|
math(EXPR MINOR "${MINOR} + 1")
|
||||||
|
set(PATCH 0)
|
||||||
|
elseif("${TYPE}" STREQUAL "PATCH")
|
||||||
|
math(EXPR PATCH "${PATCH} + 1")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(${OUT_VAR} "${MAJOR}.${MINOR}.${PATCH}" PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
# Fonction pour créer un tag git
|
# Fonction pour créer un tag git
|
||||||
function(create_git_tag VERSION)
|
function(create_git_tag VERSION)
|
||||||
find_package(Git QUIET)
|
find_package(Git QUIET)
|
||||||
@@ -65,7 +86,7 @@ while(ARG_OFFSET LESS CMAKE_ARGC)
|
|||||||
endwhile()
|
endwhile()
|
||||||
|
|
||||||
if(NOT DEFINED COMMAND_INDEX OR COMMAND_INDEX GREATER_EQUAL CMAKE_ARGC)
|
if(NOT DEFINED COMMAND_INDEX OR COMMAND_INDEX GREATER_EQUAL CMAKE_ARGC)
|
||||||
message(FATAL_ERROR "Usage: cmake -P version.cmake [GET|SET] [new_version]")
|
message(FATAL_ERROR "Usage: cmake -P version.cmake [GET|SET|PATCH|MINOR|MAJOR] [new_version]")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(COMMAND "${CMAKE_ARGV${COMMAND_INDEX}}")
|
set(COMMAND "${CMAKE_ARGV${COMMAND_INDEX}}")
|
||||||
@@ -79,6 +100,10 @@ elseif("${COMMAND}" STREQUAL "SET")
|
|||||||
endif()
|
endif()
|
||||||
set(NEW_VERSION "${CMAKE_ARGV${VERSION_INDEX}}")
|
set(NEW_VERSION "${CMAKE_ARGV${VERSION_INDEX}}")
|
||||||
set_new_version("${NEW_VERSION}")
|
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()
|
else()
|
||||||
message(FATAL_ERROR "Commande inconnue: ${COMMAND}. Utilisez GET ou SET.")
|
message(FATAL_ERROR "Commande inconnue: ${COMMAND}. Utilisez GET, SET, PATCH, MINOR ou MAJOR.")
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
Reference in New Issue
Block a user