#!/usr/bin/env bash # Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 set -eo pipefail if [[ ! -w "$(pwd)/sdk/src/version/version.cc" && ! -w "$(pwd)/api/include/opentelemetry/version.h" ]]; then echo "Error: Version file(s) are not writable. Check permissions and try again." exit 1 fi # format: "v..-+--g"" semver_regex="^v(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(\\-([0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*))?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?-([0-9]+)-g([0-9|a-z]+)$" git_tag=$(git describe --tags --long 2>/dev/null) || true if [[ ! -z $git_tag ]] && [[ $git_tag =~ $semver_regex ]]; then major="${BASH_REMATCH[1]}" minor="${BASH_REMATCH[2]}" patch="${BASH_REMATCH[3]}" pre_release="${BASH_REMATCH[5]}" #optional build_metadata="${BASH_REMATCH[7]}" #optional count_new_commits="${BASH_REMATCH[9]}" latest_commit_hash="${BASH_REMATCH[10]}" if [[ -z ${major} ]] || [[ -z ${minor} ]] || [[ -z ${patch} ]] || [[ -z ${count_new_commits} ]] || [[ -z ${latest_commit_hash} ]]; then echo "Error: Incorrect tag format recevived. Exiting.." exit 1 fi else major=0 && minor=0 && patch=0 && pre_release="" && build_metadata="" && count_new_commits=0 latest_commit_hash="$(git rev-parse --short HEAD)" fi : ${pre_release:="NONE"} # use default string if not defined : ${build_metadata:="NONE"} # use default string if not defined latest_commit_hash=$(git rev-parse ${latest_commit_hash}) # get full hash from short if [[ -z ${latest_commit_hash} ]]; then echo "Error: Incorrect short hash received. Exiting.." exit 1 fi branch="$(git rev-parse --abbrev-ref HEAD)" short_version="${major}.${minor}.${patch}" full_version="${short_version}-${pre_release}-${build_metadata}-${count_new_commits}-${branch}-${latest_commit_hash}" # Update api version.h sed -i "/^\#define OPENTELEMETRY_VERSION/c\#define OPENTELEMETRY_VERSION \"${short_version}\"" "$(pwd)/api/include/opentelemetry/version.h" git add "$(pwd)/api/include/opentelemetry/version.h" # Update sdk version.cc cat > "$(pwd)/sdk/src/version/version.cc" <