1- cmake_minimum_required (VERSION 3.20)
2-
3- if (NOT CMAKE_SCRIPT_MODE_FILE )
4- message (FATAL_ERROR "Usage: cmake -P bump_version.cmake [1.2.3]" )
5- endif ()
6-
7- if (NOT EXISTS "${CMAKE_SOURCE_DIR} /cmake.toml" )
8- message (FATAL_ERROR "Cannot find cmake.toml" )
9- endif ()
10-
11- if (NOT EXISTS "${CMAKE_SOURCE_DIR} /cmake/cmkr.cmake" )
12- message (FATAL_ERROR "Cannot find cmkr.cmake" )
13- endif ()
14-
15- # Validate branch
16- find_package (Git REQUIRED)
17- execute_process (COMMAND "${GIT_EXECUTABLE} " branch --show-current OUTPUT_VARIABLE GIT_BRANCH)
18- string (STRIP "${GIT_BRANCH} " GIT_BRANCH)
19- if (NOT GIT_BRANCH STREQUAL "main" )
20- message (FATAL_ERROR "You need to be on the main branch, you are on: ${GIT_BRANCH} " )
21- endif ()
22-
23- file (READ "${CMAKE_SOURCE_DIR} /cmake.toml" CMAKE_TOML)
24- string (FIND "${CMAKE_TOML} " "[project]" PROJECT_INDEX)
25- string (SUBSTRING "${CMAKE_TOML} " ${PROJECT_INDEX} -1 CMAKE_TOML_PROJECT)
26- set (SEMVER_REGEX "([0-9]+)\\ .([0-9]+)\\ .([0-9]+)" )
27- set (VERSION_REGEX "version = \" ${SEMVER_REGEX} \" " )
28- if (CMAKE_TOML_PROJECT MATCHES "${VERSION_REGEX} " )
29- set (MAJOR "${CMAKE_MATCH_1} " )
30- set (MINOR "${CMAKE_MATCH_2} " )
31- set (PATCH "${CMAKE_MATCH_3} " )
32- set (OLDVERSION "${MAJOR} .${MINOR} .${PATCH} " )
33- else ()
34- message (FATAL_ERROR "Failed to match semantic version in cmake.toml" )
35- endif ()
36-
37- if (CMAKE_ARGV3)
38- if (NOT CMAKE_ARGV3 MATCHES "${SEMVER_REGEX} " )
39- message (FATAL_ERROR "Invalid semantic version number '${CMAKE_ARGV3} '" )
40- endif ()
41- set (NEWVERSION "${CMAKE_ARGV3} " )
42- else ()
43- math (EXPR NEWPATCH "${PATCH} + 1" )
44- set (NEWVERSION "${MAJOR} .${MINOR} .${NEWPATCH} " )
45- endif ()
46-
47- message (STATUS "Version ${OLDVERSION} -> ${NEWVERSION} " )
48-
49- find_program (CMKR_EXECUTABLE "cmkr" PATHS "${CMAKE_SOURCE_DIR} /build" PATH_SUFFIXES Debug Release RelWithDebInfo MinSizeRel NO_CACHE REQUIRED)
50- message (STATUS "Found cmkr: ${CMKR_EXECUTABLE} " )
51-
52- # Replace version in cmake.toml
53- string (REPLACE "version = \" ${OLDVERSION} \" " "version = \" ${NEWVERSION} \" " CMAKE_TOML "${CMAKE_TOML} " )
54- file (CONFIGURE
55- OUTPUT "${CMAKE_SOURCE_DIR} /cmake.toml"
56- CONTENT "${CMAKE_TOML} "
57- @ONLY
58- NEWLINE_STYLE LF
59- )
60-
61- # Run cmkr gen
62- execute_process (COMMAND "${CMKR_EXECUTABLE} " gen RESULT_VARIABLE CMKR_EXEC_RESULT)
63- if (NOT CMKR_EXEC_RESULT EQUAL 0)
64- message (FATAL_ERROR "cmkr gen failed (exit code ${CMKR_EXEC_RESULT} )" )
65- endif ()
66-
67- # Replace version in cmkr.cmake
68- file (READ "${CMAKE_SOURCE_DIR} /cmake/cmkr.cmake" CMKR_CMAKE)
69- string (REGEX REPLACE "CMKR_TAG \" [^\" ]+\" " "CMKR_TAG \" v${NEWVERSION} \" " CMKR_CMAKE "${CMKR_CMAKE} " )
70- file (CONFIGURE
71- OUTPUT "${CMAKE_SOURCE_DIR} /cmake/cmkr.cmake"
72- CONTENT "${CMKR_CMAKE} "
73- @ONLY
74- NEWLINE_STYLE LF
75- )
76-
77- # Print git commands
1+ cmake_minimum_required (VERSION 3.20)
2+
3+ if (NOT CMAKE_SCRIPT_MODE_FILE )
4+ message (FATAL_ERROR "Usage: cmake -P bump_version.cmake [1.2.3]" )
5+ endif ()
6+
7+ if (NOT EXISTS "${CMAKE_SOURCE_DIR} /cmake.toml" )
8+ message (FATAL_ERROR "Cannot find cmake.toml" )
9+ endif ()
10+
11+ if (NOT EXISTS "${CMAKE_SOURCE_DIR} /cmake/cmkr.cmake" )
12+ message (FATAL_ERROR "Cannot find cmkr.cmake" )
13+ endif ()
14+
15+ # Validate branch
16+ find_package (Git REQUIRED)
17+ execute_process (COMMAND "${GIT_EXECUTABLE} " branch --show-current OUTPUT_VARIABLE GIT_BRANCH)
18+ string (STRIP "${GIT_BRANCH} " GIT_BRANCH)
19+ if (NOT GIT_BRANCH STREQUAL "main" )
20+ message (FATAL_ERROR "You need to be on the main branch, you are on: ${GIT_BRANCH} " )
21+ endif ()
22+
23+ file (READ "${CMAKE_SOURCE_DIR} /cmake.toml" CMAKE_TOML)
24+ string (FIND "${CMAKE_TOML} " "[project]" PROJECT_INDEX)
25+ string (SUBSTRING "${CMAKE_TOML} " ${PROJECT_INDEX} -1 CMAKE_TOML_PROJECT)
26+ set (SEMVER_REGEX "([0-9]+)\\ .([0-9]+)\\ .([0-9]+)" )
27+ set (VERSION_REGEX "version = \" ${SEMVER_REGEX} \" " )
28+ if (CMAKE_TOML_PROJECT MATCHES "${VERSION_REGEX} " )
29+ set (MAJOR "${CMAKE_MATCH_1} " )
30+ set (MINOR "${CMAKE_MATCH_2} " )
31+ set (PATCH "${CMAKE_MATCH_3} " )
32+ set (OLDVERSION "${MAJOR} .${MINOR} .${PATCH} " )
33+ else ()
34+ message (FATAL_ERROR "Failed to match semantic version in cmake.toml" )
35+ endif ()
36+
37+ if (CMAKE_ARGV3)
38+ if (NOT CMAKE_ARGV3 MATCHES "${SEMVER_REGEX} " )
39+ message (FATAL_ERROR "Invalid semantic version number '${CMAKE_ARGV3} '" )
40+ endif ()
41+ set (NEWVERSION "${CMAKE_ARGV3} " )
42+ else ()
43+ math (EXPR NEWPATCH "${PATCH} + 1" )
44+ set (NEWVERSION "${MAJOR} .${MINOR} .${NEWPATCH} " )
45+ endif ()
46+
47+ message (STATUS "Version ${OLDVERSION} -> ${NEWVERSION} " )
48+
49+ find_program (CMKR_EXECUTABLE "cmkr" PATHS "${CMAKE_SOURCE_DIR} /build" PATH_SUFFIXES Debug Release RelWithDebInfo MinSizeRel NO_CACHE REQUIRED)
50+ message (STATUS "Found cmkr: ${CMKR_EXECUTABLE} " )
51+
52+ # Replace version in cmake.toml
53+ string (REPLACE "version = \" ${OLDVERSION} \" " "version = \" ${NEWVERSION} \" " CMAKE_TOML "${CMAKE_TOML} " )
54+ file (CONFIGURE
55+ OUTPUT "${CMAKE_SOURCE_DIR} /cmake.toml"
56+ CONTENT "${CMAKE_TOML} "
57+ @ONLY
58+ NEWLINE_STYLE LF
59+ )
60+
61+ # Run cmkr gen
62+ execute_process (COMMAND "${CMKR_EXECUTABLE} " gen RESULT_VARIABLE CMKR_EXEC_RESULT)
63+ if (NOT CMKR_EXEC_RESULT EQUAL 0)
64+ message (FATAL_ERROR "cmkr gen failed (exit code ${CMKR_EXEC_RESULT} )" )
65+ endif ()
66+
67+ # Replace version in cmkr.cmake
68+ file (READ "${CMAKE_SOURCE_DIR} /cmake/cmkr.cmake" CMKR_CMAKE)
69+ string (REGEX REPLACE "CMKR_TAG \" [^\" ]+\" " "CMKR_TAG \" v${NEWVERSION} \" " CMKR_CMAKE "${CMKR_CMAKE} " )
70+ file (CONFIGURE
71+ OUTPUT "${CMAKE_SOURCE_DIR} /cmake/cmkr.cmake"
72+ CONTENT "${CMKR_CMAKE} "
73+ @ONLY
74+ NEWLINE_STYLE LF
75+ )
76+
77+ # Print git commands
7878message (STATUS "Git commands to create new version:\n git commit -a -m \" Bump to ${NEWVERSION} \"\n git tag v${NEWVERSION} \n git push origin main v${NEWVERSION} " )
0 commit comments