Created
November 7, 2020 00:24
-
-
Save rpappalax/a9c4ffd5e9836584507a08e8e75ab653 to your computer and use it in GitHub Desktop.
ugly2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env sh | |
function semverParseInto() { | |
local RE='[^0-9]*\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([0-9A-Za-z-]*\)' | |
#MAJOR | |
eval $2=`echo $1 | sed -e "s#$RE#\1#"` | |
#MINOR | |
eval $3=`echo $1 | sed -e "s#$RE#\2#"` | |
#MINOR | |
eval $4=`echo $1 | sed -e "s#$RE#\3#"` | |
#SPECIAL | |
eval $5=`echo $1 | sed -e "s#$RE#\4#"` | |
} | |
function semverEQ() { | |
local MAJOR_A=0 | |
local MINOR_A=0 | |
local PATCH_A=0 | |
local SPECIAL_A=0 | |
local MAJOR_B=0 | |
local MINOR_B=0 | |
local PATCH_B=0 | |
local SPECIAL_B=0 | |
semverParseInto $1 MAJOR_A MINOR_A PATCH_A SPECIAL_A | |
semverParseInto $2 MAJOR_B MINOR_B PATCH_B SPECIAL_B | |
if [ $MAJOR_A -ne $MAJOR_B ]; then | |
return 1 | |
fi | |
if [ $MINOR_A -ne $MINOR_B ]; then | |
return 1 | |
fi | |
if [ $PATCH_A -ne $PATCH_B ]; then | |
return 1 | |
fi | |
if [[ "_$SPECIAL_A" != "_$SPECIAL_B" ]]; then | |
return 1 | |
fi | |
return 0 | |
} | |
function semverLT() { | |
local MAJOR_A=0 | |
local MINOR_A=0 | |
local PATCH_A=0 | |
local SPECIAL_A=0 | |
local MAJOR_B=0 | |
local MINOR_B=0 | |
local PATCH_B=0 | |
local SPECIAL_B=0 | |
semverParseInto $1 MAJOR_A MINOR_A PATCH_A SPECIAL_A | |
semverParseInto $2 MAJOR_B MINOR_B PATCH_B SPECIAL_B | |
if [ $MAJOR_A -lt $MAJOR_B ]; then | |
return 0 | |
fi | |
if [[ $MAJOR_A -le $MAJOR_B && $MINOR_A -lt $MINOR_B ]]; then | |
return 0 | |
fi | |
if [[ $MAJOR_A -le $MAJOR_B && $MINOR_A -le $MINOR_B && $PATCH_A -lt $PATCH_B ]]; then | |
return 0 | |
fi | |
if [[ "_$SPECIAL_A" == "_" ]] && [[ "_$SPECIAL_B" == "_" ]] ; then | |
return 1 | |
fi | |
if [[ "_$SPECIAL_A" == "_" ]] && [[ "_$SPECIAL_B" != "_" ]] ; then | |
return 1 | |
fi | |
if [[ "_$SPECIAL_A" != "_" ]] && [[ "_$SPECIAL_B" == "_" ]] ; then | |
return 0 | |
fi | |
if [[ "_$SPECIAL_A" < "_$SPECIAL_B" ]]; then | |
return 0 | |
fi | |
return 1 | |
} | |
function semverGT() { | |
semverEQ $1 $2 | |
local EQ=$? | |
semverLT $1 $2 | |
local LT=$? | |
if [ $EQ -ne 0 ] && [ $LT -ne 0 ]; then | |
return 0 | |
else | |
return 1 | |
fi | |
} | |
if [ "___semver.sh" == "___`basename $0`" ]; then | |
MAJOR=0 | |
MINOR=0 | |
PATCH=0 | |
SPECIAL="" | |
semverParseInto $1 MAJOR MINOR PATCH SPECIAL | |
echo "$1 -> M: $MAJOR m:$MINOR p:$PATCH s:$SPECIAL" | |
semverParseInto $2 MAJOR MINOR PATCH SPECIAL | |
echo "$2 -> M: $MAJOR m:$MINOR p:$PATCH s:$SPECIAL" | |
semverEQ $1 $2 | |
echo "$1 == $2 -> $?." | |
semverLT $1 $2 | |
echo "$1 < $2 -> $?." | |
semverGT $1 $2 | |
echo "$1 > $2 -> $?." | |
fi | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment