semver.sh 813 B

1234567891011121314151617181920212223242526272829
  1. #!/usr/bin/env bash
  2. set -e
  3. function parseSemver() {
  4. local RE='^([0-9]+)\.([0-9]+)\.([0-9]+)(-([a-z]+\.[0-9]+))?$'
  5. echo "$1" | grep -qE "$RE" || exit 1
  6. #shellcheck disable=SC2155
  7. local MAJOR=$(echo "$1" | sed -r "s#$RE#\1#")
  8. #shellcheck disable=SC2155
  9. local MINOR=$(echo "$1" | sed -r "s#$RE#\2#")
  10. #shellcheck disable=SC2155
  11. local PATCH=$(echo "$1" | sed -r "s#$RE#\3#")
  12. #shellcheck disable=SC2155
  13. local BUILD=$(echo "$1" | sed -r "s#$RE#\5#")
  14. case "${2}" in
  15. --major) echo "${MAJOR}" ;;
  16. --minor) echo "${MINOR}" ;;
  17. --patch) echo "${PATCH}" ;;
  18. --build) echo "${BUILD}" ;;
  19. *)
  20. cat <<EOF
  21. {"major": ${MAJOR}, "minor": ${MINOR}, "patch": ${PATCH}, "build": "${BUILD}"}
  22. EOF
  23. ;;
  24. esac
  25. }
  26. parseSemver "$1" "$2"