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
|
||||
|
||||
# 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
|
||||
"${CMAKE_CURRENT_LIST_DIR}/package.json"
|
||||
@@ -15,6 +15,27 @@ function(get_current_version OUT_VAR)
|
||||
set(${OUT_VAR} ${CURRENT_VERSION} PARENT_SCOPE)
|
||||
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
|
||||
function(create_git_tag VERSION)
|
||||
find_package(Git QUIET)
|
||||
@@ -65,7 +86,7 @@ while(ARG_OFFSET LESS CMAKE_ARGC)
|
||||
endwhile()
|
||||
|
||||
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()
|
||||
|
||||
set(COMMAND "${CMAKE_ARGV${COMMAND_INDEX}}")
|
||||
@@ -79,6 +100,10 @@ elseif("${COMMAND}" STREQUAL "SET")
|
||||
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 ou SET.")
|
||||
message(FATAL_ERROR "Commande inconnue: ${COMMAND}. Utilisez GET, SET, PATCH, MINOR ou MAJOR.")
|
||||
endif()
|
||||
|
||||
Reference in New Issue
Block a user