39 lines
1.4 KiB
Bash
Executable File
39 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -eo pipefail; [[ $TRACE ]] && set -x
|
|
|
|
semver-parse-into() {
|
|
declare VERSION="$1"
|
|
local RE='[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)'
|
|
local MAJOR="$(echo "$VERSION" | sed -e "s#$RE#\1#")"
|
|
local MINOR="$(echo "$VERSION" | sed -e "s#$RE#\2#")"
|
|
local PATCH="$(echo "$VERSION" | sed -e "s#$RE#\3#")"
|
|
echo "${MAJOR} ${MINOR} ${PATCH}"
|
|
}
|
|
|
|
main() {
|
|
declare MIN_VERSION="$1" CHECK_VERSION="$2"
|
|
local IS_AT_LEAST_VERSION=false
|
|
local MAJOR_MIN MINOR_MIN PATCH_MIN MAJOR_CHECK MINOR_CHECK PATCH_CHECK PARSED_MIN PARSED_CHECK
|
|
|
|
PARSED_MIN="$(semver-parse-into "$MIN_VERSION")"
|
|
PARSED_CHECK="$(semver-parse-into "$CHECK_VERSION")"
|
|
MAJOR_MIN="$(echo "$PARSED_MIN" | cut -d' ' -f1)"
|
|
MINOR_MIN="$(echo "$PARSED_MIN" | cut -d' ' -f2)"
|
|
PATCH_MIN="$(echo "$PARSED_MIN" | cut -d' ' -f3)"
|
|
MAJOR_CHECK="$(echo "$PARSED_CHECK" | cut -d' ' -f1)"
|
|
MINOR_CHECK="$(echo "$PARSED_CHECK" | cut -d' ' -f2)"
|
|
PATCH_CHECK="$(echo "$PARSED_CHECK" | cut -d' ' -f3)"
|
|
|
|
if [[ "$MAJOR_CHECK" -gt "$MAJOR_MIN" ]]; then
|
|
IS_AT_LEAST_VERSION=true
|
|
elif [[ "$MAJOR_CHECK" -eq "$MAJOR_MIN" ]] && [[ "$MINOR_CHECK" -gt "$MINOR_MIN" ]]; then
|
|
IS_AT_LEAST_VERSION=true
|
|
elif [[ "$MAJOR_CHECK" -eq "$MAJOR_MIN" ]] && [[ "$MINOR_CHECK" -eq "$MINOR_MIN" ]] && [[ "$PATCH_CHECK" -ge "$PATCH_MIN" ]]; then
|
|
IS_AT_LEAST_VERSION=true
|
|
fi
|
|
|
|
echo "$IS_AT_LEAST_VERSION"
|
|
}
|
|
|
|
main "$@"
|