| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- #!/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
|