Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

84 строки
2.5 KiB

  1. # Execute git command and return the output
  2. Function ( GitExecute COMMAND RESULT )
  3. Execute_Process ( COMMAND
  4. bash -c "${COMMAND}"
  5. RESULT_VARIABLE
  6. GIT_RET
  7. OUTPUT_VARIABLE
  8. GIT_REV
  9. ERROR_VARIABLE
  10. GIT_ERR )
  11. If ( NOT ${GIT_RET} EQUAL 0
  12. OR NOT "${GIT_ERR}" STREQUAL ""
  13. OR "${GIT_REV}" STREQUAL "" )
  14. Message ( FATAL_ERROR "Unable to execute git command (command=${COMMAND} out=${GIT_REV}; err=${GIT_ERR}; ret=${GIT_RET})" )
  15. EndIf ( )
  16. Set ( ${RESULT} "${GIT_REV}" PARENT_SCOPE )
  17. EndFunction ( )
  18. # Get the version by reading the git tag
  19. Function ( GitGetVersion GIT_ROOT OUT_MAJOR OUT_MINOR OUT_PATCH OUT_BUILD OUT_HASH OUT_BEHIND OUT_DIRTY )
  20. If ( NOT EXISTS "${GIT_ROOT}/.git" )
  21. Return ( )
  22. EndIf ( )
  23. # Find the latest git tag
  24. GitExecute ( "git describe --tags --abbrev=1 --match v[0-9].[0-9]* HEAD" TAG )
  25. GitExecute ( "git status -s -uall" DIRTY )
  26. GitExecute ( "git rev-parse HEAD" HASH )
  27. # Split the git revision string
  28. String ( REGEX REPLACE "^v" "" TAG "${TAG}" )
  29. String ( REPLACE "-" ";" SPLIT "${TAG}" )
  30. List ( LENGTH SPLIT COUNT )
  31. If ( ${COUNT} LESS 2 )
  32. Message ( FATAL_ERROR "Unable to split git tag into it's sub components: ${TAG}!" )
  33. EndIf ( )
  34. List ( GET SPLIT 0 VERSION )
  35. List ( GET SPLIT 1 BEHIND )
  36. # Split the version
  37. String ( STRIP "${VERSION}" SPLIT )
  38. String ( REPLACE "." ";" SPLIT "${SPLIT}" )
  39. List ( LENGTH SPLIT COUNT )
  40. If ( ${COUNT} LESS 2 )
  41. Message ( FATAL_ERROR "Unable to split version string: ${VERSION}!" )
  42. EndIf ( )
  43. # major
  44. List ( GET SPLIT 0 TMP )
  45. Set ( ${OUT_MAJOR} ${TMP} PARENT_SCOPE )
  46. # minor
  47. List ( GET SPLIT 1 TMP )
  48. Set ( ${OUT_MINOR} ${TMP} PARENT_SCOPE )
  49. # patch
  50. If ( ${COUNT} GREATER 2 )
  51. List ( GET SPLIT 2 TMP )
  52. Set ( ${OUT_PATCH} ${TMP} PARENT_SCOPE )
  53. EndIf ( )
  54. # build
  55. If ( ${COUNT} GREATER 3 )
  56. List ( GET SPLIT 3 TMP )
  57. Set ( ${OUT_BUILD} ${TMP} PARENT_SCOPE )
  58. EndIf ( )
  59. # hash
  60. String ( STRIP "${HASH}" HASH )
  61. Set ( ${OUT_HASH} ${HASH} PARENT_SCOPE )
  62. # behind
  63. Set ( ${OUT_BEHIND} ${BEHIND} PARENT_SCOPE )
  64. # dirty
  65. If ( DIRTY )
  66. Set ( ${OUT_DIRTY} 1 PARENT_SCOPE )
  67. Else ( )
  68. Set ( ${OUT_DIRTY} 0 PARENT_SCOPE )
  69. EndIf ( )
  70. EndFunction ( )