update-version-file.sh 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #!/usr/bin/env bash
  2. ##
  3. # Updates the version file
  4. #
  5. # @author Daniel Rudolf
  6. # @link http://picocms.org
  7. # @license http://opensource.org/licenses/MIT
  8. #
  9. set -e
  10. # parameters
  11. VERSION_FILE_PATH="$1" # target file path
  12. VERSION_FULL="$2" # full version string (e.g. 1.0.0-beta.1+7b4ad7f)
  13. # print parameters
  14. echo "Generating version file..."
  15. printf 'VERSION_FILE_PATH="%s"\n' "$VERSION_FILE_PATH"
  16. printf 'VERSION_FULL="%s"\n' "$VERSION_FULL"
  17. echo
  18. # evaluate version constraint (see http://semver.org/)
  19. printf 'Evaluating version constraint...\n'
  20. if [[ "$VERSION_FULL" =~ ^([0-9]+)\.([0-9]{1,2})\.([0-9]{1,2})(-([0-9A-Za-z\.\-]+))?(\+([0-9A-Za-z\.\-]+))?$ ]]; then
  21. VERSION_MAJOR="${BASH_REMATCH[1]}"
  22. VERSION_MINOR="${BASH_REMATCH[2]}"
  23. VERSION_PATCH="${BASH_REMATCH[3]}"
  24. VERSION_SUFFIX="${BASH_REMATCH[5]}"
  25. VERSION_BUILD="${BASH_REMATCH[7]}"
  26. VERSION_MILESTONE="$VERSION_MAJOR.$VERSION_MINOR"
  27. VERSION_NAME="$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH"
  28. VERSION_ID="$VERSION_MAJOR$(printf '%02d' "$VERSION_MINOR")$(printf '%02d' "$VERSION_PATCH")"
  29. else
  30. echo "Invalid version constraint; skipping..." >&2
  31. exit 1
  32. fi
  33. # generate version file
  34. printf 'Updating version file...\n'
  35. echo -n "" > "$VERSION_FILE_PATH"
  36. exec 3> "$VERSION_FILE_PATH"
  37. printf 'full: %s\n' "$VERSION_FULL" >&3
  38. printf 'name: %s\n' "$VERSION_NAME" >&3
  39. printf 'milestone: %s\n' "$VERSION_MILESTONE" >&3
  40. printf 'id: %d\n' "$VERSION_ID" >&3
  41. printf 'major: %d\n' "$VERSION_MAJOR" >&3
  42. printf 'minor: %d\n' "$VERSION_MINOR" >&3
  43. printf 'patch: %d\n' "$VERSION_PATCH" >&3
  44. printf 'suffix: %s\n' "$VERSION_SUFFIX" >&3
  45. printf 'build: %s\n' "$VERSION_BUILD" >&3
  46. exec 3>&-
  47. echo