Skip to content

Instantly share code, notes, and snippets.

@gtrabanco
Created April 9, 2021 00:25
Show Gist options
  • Save gtrabanco/2dfdf04e916498bebf5c7cf0c8f7deeb to your computer and use it in GitHub Desktop.
Save gtrabanco/2dfdf04e916498bebf5c7cf0c8f7deeb to your computer and use it in GitHub Desktop.
Bash semver compare
# Used as reference: https://gist.github.com/maxrimue/ca69ee78081645e1ef62
platform::semver_compare() {
normalize_ver() {
echo "${${1//./ }//v/}"
}
compare_ver() {
[[ $1 -lt $2 ]] && echo -1 && return
[[ $1 -gt $2 ]] && echo 1 && return
echo 0
}
v1="$(normalize_ver $1)"
v2="$(normalize_ver $2)"
major1="$(echo $v1 | awk '{print $1}')"
major2="$(echo $v2 | awk '{print $1}')"
minor1="$(echo $v1 | awk '{print $2}')"
minor2="$(echo $v2 | awk '{print $2}')"
patch1="$(echo $v1 | awk '{print $3}')"
patch2="$(echo $v2 | awk '{print $3}')"
compare_major="$(compare_ver $major1 $major2)"
compare_minor="$(compare_ver $minor1 $minor2)"
compare_patch="$(compare_ver $patch1 $patch2)"
if [[ $compare_major -ne 0 ]]; then
echo "$compare_major"
elif [[ $compare_minor -ne 0 ]]; then
echo "$compare_minor"
else
echo "$compare_patch"
fi
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment