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