parse-version.sh.inc 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. ##
  2. # Evaluates a version string
  3. #
  4. # @author Daniel Rudolf
  5. # @link http://picocms.org
  6. # @license http://opensource.org/licenses/MIT
  7. #
  8. parse_version() {
  9. VERSION_FULL="$1"
  10. if [ "${VERSION_FULL:0:1}" == "v" ]; then
  11. VERSION_FULL="${VERSION_FULL:1}"
  12. fi
  13. if [[ "$VERSION_FULL" =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)(-([0-9A-Za-z\.\-]+))?(\+([0-9A-Za-z\.\-]+))?$ ]]; then
  14. VERSION_MAJOR="${BASH_REMATCH[1]}"
  15. VERSION_MINOR="${BASH_REMATCH[2]}"
  16. VERSION_PATCH="${BASH_REMATCH[3]}"
  17. VERSION_SUFFIX="${BASH_REMATCH[5]}"
  18. VERSION_BUILD="${BASH_REMATCH[7]}"
  19. VERSION_STABILITY="stable"
  20. if [[ "$VERSION_SUFFIX" =~ ^(dev|a|alpha|b|beta|RC)?([.-]?[0-9]+)?([.-](dev))?$ ]]; then
  21. if [ "${BASH_REMATCH[1]}" == "dev" ] || [ "${BASH_REMATCH[4]}" == "dev" ]; then
  22. VERSION_STABILITY="dev"
  23. elif [ "${BASH_REMATCH[1]}" == "a" ] || [ "${BASH_REMATCH[1]}" == "alpha" ]; then
  24. VERSION_STABILITY="alpha"
  25. elif [ "${BASH_REMATCH[1]}" == "b" ] || [ "${BASH_REMATCH[1]}" == "beta" ]; then
  26. VERSION_STABILITY="beta"
  27. elif [ "${BASH_REMATCH[1]}" == "RC" ]; then
  28. VERSION_STABILITY="RC"
  29. fi
  30. fi
  31. VERSION_MILESTONE="$VERSION_MAJOR.$VERSION_MINOR"
  32. VERSION_NAME="$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH"
  33. VERSION_ID="$VERSION_MAJOR$(printf '%02d' "$VERSION_MINOR")$(printf '%02d' "$VERSION_PATCH")"
  34. return 0
  35. else
  36. return 1
  37. fi
  38. }