131 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/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
 |