52 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/bin/bash
 | 
						|
# Copyright Broadcom, Inc. All Rights Reserved.
 | 
						|
# SPDX-License-Identifier: APACHE-2.0
 | 
						|
#
 | 
						|
# Library for managing versions strings
 | 
						|
 | 
						|
# shellcheck disable=SC1091
 | 
						|
 | 
						|
# Load Generic Libraries
 | 
						|
. /opt/bitnami/scripts/liblog.sh
 | 
						|
 | 
						|
# Functions
 | 
						|
########################
 | 
						|
# Gets semantic version
 | 
						|
# Arguments:
 | 
						|
#   $1 - version: string to extract major.minor.patch
 | 
						|
#   $2 - section: 1 to extract major, 2 to extract minor, 3 to extract patch
 | 
						|
# Returns:
 | 
						|
#   array with the major, minor and release
 | 
						|
#########################
 | 
						|
get_sematic_version () {
 | 
						|
    local version="${1:?version is required}"
 | 
						|
    local section="${2:?section is required}"
 | 
						|
    local -a version_sections
 | 
						|
 | 
						|
    #Regex to parse versions: x.y.z
 | 
						|
    local -r regex='([0-9]+)(\.([0-9]+)(\.([0-9]+))?)?'
 | 
						|
 | 
						|
    if [[ "$version" =~ $regex ]]; then
 | 
						|
        local i=1
 | 
						|
        local j=1
 | 
						|
        local n=${#BASH_REMATCH[*]}
 | 
						|
 | 
						|
        while [[ $i -lt $n ]]; do
 | 
						|
            if [[ -n "${BASH_REMATCH[$i]}" ]] && [[ "${BASH_REMATCH[$i]:0:1}" != '.' ]];  then
 | 
						|
                version_sections[j]="${BASH_REMATCH[$i]}"
 | 
						|
                ((j++))
 | 
						|
            fi
 | 
						|
            ((i++))
 | 
						|
        done
 | 
						|
 | 
						|
        local number_regex='^[0-9]+$'
 | 
						|
        if [[ "$section" =~ $number_regex ]] && (( section > 0 )) && (( section <= 3 )); then
 | 
						|
             echo "${version_sections[$section]}"
 | 
						|
             return
 | 
						|
        else
 | 
						|
            stderr_print "Section allowed values are: 1, 2, and 3"
 | 
						|
            return 1
 | 
						|
        fi
 | 
						|
    fi
 | 
						|
}
 |