parse-git-ref.sh 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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. EDITION=Opensource
  18. RELEASE=true
  19. LATEST=$(is_latest "$1")
  20. elif [[ $1 =~ ^refs/tags/v[5-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
  21. PROFILE=emqx
  22. EDITION=Opensource
  23. RELEASE=true
  24. LATEST=$(is_latest "$1")
  25. elif [[ $1 =~ ^refs/tags/e[5-9]+\.[0-9]+\.[0-9]+$ ]]; then
  26. PROFILE=emqx-enterprise
  27. EDITION=Enterprise
  28. RELEASE=true
  29. LATEST=$(is_latest "$1")
  30. elif [[ $1 =~ ^refs/tags/e[5-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
  31. PROFILE=emqx-enterprise
  32. EDITION=Enterprise
  33. RELEASE=true
  34. LATEST=$(is_latest "$1")
  35. elif [[ $1 =~ ^refs/tags/v[5-9]+\.[0-9]+\.[0-9]+-(alpha|beta|rc)\.[0-9]+$ ]]; then
  36. PROFILE=emqx
  37. EDITION=Opensource
  38. RELEASE=true
  39. LATEST=false
  40. elif [[ $1 =~ ^refs/tags/e[5-9]+\.[0-9]+\.[0-9]+-(alpha|beta|rc)\.[0-9]+$ ]]; then
  41. PROFILE=emqx-enterprise
  42. EDITION=Enterprise
  43. RELEASE=true
  44. LATEST=false
  45. elif [[ $1 =~ ^refs/tags/.+ ]]; then
  46. echo "Unrecognized tag: $1" 1>&2
  47. exit 1
  48. elif [[ $1 =~ ^refs/heads/master$ ]]; then
  49. PROFILE=emqx
  50. EDITION=Opensource
  51. RELEASE=false
  52. LATEST=false
  53. elif [[ $1 =~ ^refs/heads/release-[5-9][0-9]+$ ]]; then
  54. PROFILE=emqx-enterprise
  55. EDITION=Enterprise
  56. RELEASE=false
  57. LATEST=false
  58. elif [[ $1 =~ ^refs/heads/ci/.* ]]; then
  59. PROFILE=emqx
  60. EDITION=Opensource
  61. RELEASE=false
  62. LATEST=false
  63. else
  64. echo "Unrecognized git ref: $1" 1>&2
  65. exit 1
  66. fi
  67. cat <<EOF
  68. {"profile": "$PROFILE", "edition": "$EDITION", "release": $RELEASE, "latest": $LATEST}
  69. EOF