You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.4 KiB
52 lines
1.4 KiB
4 months ago
|
#!/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
|
||
|
}
|