parse-git-ref.sh 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #!/usr/bin/env bash
  2. set -euo pipefail
  3. # $1 is fully qualified git ref name, e.g. refs/tags/v5.1.0 or refs/heads/master
  4. is_latest() {
  5. ref_name=$(basename "$1")
  6. # shellcheck disable=SC2046
  7. for t in $(git tag --points-at $(git rev-list --tags --max-count=1)); do
  8. if [[ "$t" == "$ref_name" ]]; then
  9. echo true;
  10. return;
  11. fi
  12. done
  13. echo false
  14. }
  15. if [[ $1 =~ ^refs/tags/v[5-9]+\.[0-9]+\.[0-9]+$ ]]; then
  16. PROFILE=emqx
  17. RELEASE=true
  18. LATEST=$(is_latest "$1")
  19. elif [[ $1 =~ ^refs/tags/v[5-9]+\.[0-9]+\.[0-9]+-build\.[0-9]+$ ]]; then
  20. PROFILE=emqx
  21. RELEASE=true
  22. LATEST=$(is_latest "$1")
  23. elif [[ $1 =~ ^refs/tags/e[5-9]+\.[0-9]+\.[0-9]+$ ]]; then
  24. PROFILE=emqx-enterprise
  25. RELEASE=true
  26. LATEST=$(is_latest "$1")
  27. elif [[ $1 =~ ^refs/tags/e[5-9]+\.[0-9]+\.[0-9]+-build\.[0-9]+$ ]]; then
  28. PROFILE=emqx-enterprise
  29. RELEASE=true
  30. LATEST=$(is_latest "$1")
  31. elif [[ $1 =~ ^refs/tags/v[5-9]+\.[0-9]+\.[0-9]+-(alpha|beta|rc)\.[0-9]+$ ]]; then
  32. PROFILE=emqx
  33. RELEASE=true
  34. LATEST=false
  35. elif [[ $1 =~ ^refs/tags/e[5-9]+\.[0-9]+\.[0-9]+-(alpha|beta|rc)\.[0-9]+$ ]]; then
  36. PROFILE=emqx-enterprise
  37. RELEASE=true
  38. LATEST=false
  39. elif [[ $1 =~ ^refs/tags/.+ ]]; then
  40. echo "Unrecognized tag: $1" 1>&2
  41. exit 1
  42. elif [[ $1 =~ ^refs/heads/master$ ]]; then
  43. PROFILE=emqx
  44. RELEASE=false
  45. LATEST=false
  46. elif [[ $1 =~ ^refs/heads/release-[5-9][0-9]+$ ]]; then
  47. PROFILE=emqx-enterprise
  48. RELEASE=false
  49. LATEST=false
  50. elif [[ $1 =~ ^refs/heads/ci/.* ]]; then
  51. PROFILE=emqx
  52. RELEASE=false
  53. LATEST=false
  54. else
  55. echo "Unrecognized git ref: $1" 1>&2
  56. exit 1
  57. fi
  58. cat <<EOF
  59. {"profile": "$PROFILE", "release": $RELEASE, "latest": $LATEST}
  60. EOF