From 9233c1bf89a8ad1cef94edf3dd6a34986e9f63d4 Mon Sep 17 00:00:00 2001 From: Mathis HERRIOT <197931332+0x485254@users.noreply.github.com> Date: Tue, 20 Jan 2026 10:52:41 +0100 Subject: [PATCH] feat(versioning): add support for SemVer increment commands (PATCH, MINOR, MAJOR) in version script --- version.cmake | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/version.cmake b/version.cmake index 0f29552..ed8fdb3 100644 --- a/version.cmake +++ b/version.cmake @@ -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()