#!/bin/env bash # Copyright (c) HashiCorp, Inc. # SPDX-License-Identifier: BUSL-1.1 set -euo pipefail # Get the full version information # this is only needed for local enos builds in order to get the default version from version_base.go # this should match the default version that the binary has been built with # CRT release builds use the new static version from ./release/VERSION function version() { local version local prerelease local metadata version=$(version_base) prerelease=$(version_pre) metadata=$(version_metadata) if [ -n "$metadata" ] && [ -n "$prerelease" ]; then echo "$version-$prerelease+$metadata" elif [ -n "$metadata" ]; then echo "$version+$metadata" elif [ -n "$prerelease" ]; then echo "$version-$prerelease" else echo "$version" fi } # Get the base version function version_base() { : "${VAULT_VERSION:=""}" if [ -n "$VAULT_VERSION" ]; then echo "$VAULT_VERSION" return fi : "${VERSION_FILE:=$(repo_root)/version/VERSION}" awk -F- '{ print $1 }' < "$VERSION_FILE" } # Get the version pre-release function version_pre() { : "${VAULT_PRERELEASE:=""}" if [ -n "$VAULT_PRERELEASE" ]; then echo "$VAULT_PRERELEASE" return fi : "${VERSION_FILE:=$(repo_root)/version/VERSION}" awk -F- '{ print $2 }' < "$VERSION_FILE" } # Get the version metadata, which is commonly the edition function version_metadata() { : "${VAULT_METADATA:=""}" if [ -n "$VAULT_METADATA" ]; then echo "$VAULT_METADATA" return fi : "${VERSION_FILE:=$(repo_root)/version/version_base.go}" awk '$1 == "VersionMetadata" && $2 == "=" { gsub(/"/, "", $3); print $3 }' < "$VERSION_FILE" } # Determine the root directory of the repository function repo_root() { git rev-parse --show-toplevel } # Run Enos local function main() { case $1 in version) version ;; version-base) version_base ;; version-pre) version_pre ;; version-meta) version_metadata ;; *) echo "unknown sub-command" >&2 exit 1 ;; esac } main "$@"