@@ -8,81 +8,7 @@ include_guard(GLOBAL)
88message (VERBOSE "rsp/version module included" )
99
1010include ("rsp/git" )
11-
12- if (NOT COMMAND "semver_parse" )
13- #! semver_parse : Parses a semantic version string
14- #
15- # @see https://semver.org/
16- #
17- # @example
18- # semver_parse(VERSION "v3.4.22-beta.3+AF1004" OUTPUT foo)
19- # message("${foo_VERSION}") # 3.4.22
20- #
21- # @param VERSION <string> The version string to parse
22- # @param OUTPUT <variable> The output variable to assign parsed results to
23- #
24- # @return
25- # [OUTPUT] The full version string as provided, e.g. "v3.4.22-beta.3+AF1004"
26- # [OUTPUT]_VERSION CMake friendly version (major.minor.patch), e.g. "3.4.22"
27- # [OUTPUT]_SEMVER Full version string (without eventual "v" prefix), e.g. "3.4.22-beta.3+AF1004"
28- # [OUTPUT]_MAJOR Major version, e.g. "3"
29- # [OUTPUT]_MINOR Minor version, e.g. "4"
30- # [OUTPUT]_PATCH Patch version, e.g. "22"
31- # [OUTPUT]_PRE_RELEASE Pre-release, e.g. "beta.3"
32- # [OUTPUT]_BUILD_METADATA build-meta data, e.g. "AF1004"
33- #
34- # @throws If given VERSION is not a valid semantic version
35- #
36- function (semver_parse)
37- set (options "" ) # N/A
38- set (oneValueArgs VERSION OUTPUT )
39- set (multiValueArgs "" ) # N/A
40-
41- cmake_parse_arguments (INPUT "${options} " "${oneValueArgs} " "${multiValueArgs} " ${ARGN} )
42-
43- # Ensure required arguments are defined
44- foreach (name ${oneValueArgs} )
45- if (NOT DEFINED INPUT_${name} )
46- message (FATAL_ERROR "${name} argument is missing, for ${CMAKE_CURRENT_FUNCTION} ()" )
47- endif ()
48- endforeach ()
49-
50- # Remove eventual "v" prefix from given version string
51- string (REGEX REPLACE "^[v]" "" cleanVersion "${INPUT_VERSION} " )
52-
53- # Parse given version string
54- string (REGEX MATCH "^(0|[1-9][0-9]*)\. (0|[1-9][0-9]*)\. (0|[1-9][0-9]*)(-[\. 0-9A-Za-z-]+)?([+][\. 0-9A-Za-z-]+)?$" matches "${cleanVersion} " )
55- if (CMAKE_MATCH_COUNT LESS 3)
56- message (FATAL_ERROR "${cleanVersion} is not a valid semantic version" )
57- endif ()
58-
59- # Extract parts
60- set ("${INPUT_OUTPUT} " "${INPUT_VERSION} " ) # Full version, as provided
61- set ("${INPUT_OUTPUT} _SEMVER" "${CMAKE_MATCH_0} " ) # Semantic version (without "v" prefix")
62- set ("${INPUT_OUTPUT} _MAJOR" "${CMAKE_MATCH_1} " )
63- set ("${INPUT_OUTPUT} _MINOR" "${CMAKE_MATCH_2} " )
64- set ("${INPUT_OUTPUT} _PATCH" "${CMAKE_MATCH_3} " )
65- set ("${INPUT_OUTPUT} _PRE_RELEASE" "${CMAKE_MATCH_4} " )
66- set ("${INPUT_OUTPUT} _BUILD_METADATA" "${CMAKE_MATCH_5} " )
67- set ("${INPUT_OUTPUT} _VERSION" "${CMAKE_MATCH_1} .${CMAKE_MATCH_2} .${CMAKE_MATCH_3} " ) # major.minor.patch
68-
69- # Remove eventual "-" or "+" prefixes from pre-release and build-metadata
70- string (REGEX REPLACE "^[-]" "" ${INPUT_OUTPUT} _PRE_RELEASE "${${INPUT_OUTPUT} _PRE_RELEASE}" )
71- string (REGEX REPLACE "^[+]" "" ${INPUT_OUTPUT} _BUILD_METADATA "${${INPUT_OUTPUT} _BUILD_METADATA}" )
72-
73- return (
74- PROPAGATE
75- "${INPUT_OUTPUT} "
76- "${INPUT_OUTPUT} _VERSION"
77- "${INPUT_OUTPUT} _SEMVER"
78- "${INPUT_OUTPUT} _MAJOR"
79- "${INPUT_OUTPUT} _MINOR"
80- "${INPUT_OUTPUT} _PATCH"
81- "${INPUT_OUTPUT} _PRE_RELEASE"
82- "${INPUT_OUTPUT} _BUILD_METADATA"
83- )
84- endfunction ()
85- endif ()
11+ include ("rsp/version/semver" )
8612
8713if (NOT COMMAND "write_version_file" )
8814
@@ -283,4 +209,4 @@ if (NOT COMMAND "version_from_file")
283209 "${INPUT_OUTPUT} _BUILD_METADATA"
284210 )
285211 endfunction ()
286- endif ()
212+ endif ()
0 commit comments