mirror of
https://github.com/hashicorp/vault.git
synced 2025-08-16 11:37:04 +02:00
* add sys/internal/ui/version path * add read capability for sys/internal/ui/version in default policy * add changelog file * doc: add api-docs page for sys/internal/ui/version * add godoc for pathInternalUIVersion function * add tests for functions in version package * remove unreachable code * use closure to restore version at end of test function * use an example version in sample response * Update website/content/api-docs/system/internal-ui-version.mdx Co-authored-by: Sarah Chavis <62406755+schavis@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Sarah Chavis <62406755+schavis@users.noreply.github.com> * Update website/content/api-docs/system/internal-ui-version.mdx Co-authored-by: Sarah Chavis <62406755+schavis@users.noreply.github.com> * add copyright header to version_test.go --------- Co-authored-by: Sarah Chavis <62406755+schavis@users.noreply.github.com>
80 lines
1.7 KiB
Go
80 lines
1.7 KiB
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
|
|
package version
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
)
|
|
|
|
type VersionInfo struct {
|
|
Revision string `json:"revision,omitempty"`
|
|
Version string `json:"version,omitempty"`
|
|
VersionPrerelease string `json:"version_prerelease,omitempty"`
|
|
VersionMetadata string `json:"version_metadata,omitempty"`
|
|
BuildDate string `json:"build_date,omitempty"`
|
|
}
|
|
|
|
func GetVersion() *VersionInfo {
|
|
ver := Version
|
|
rel := VersionPrerelease
|
|
md := VersionMetadata
|
|
if GitDescribe != "" {
|
|
ver = GitDescribe
|
|
}
|
|
|
|
return &VersionInfo{
|
|
Revision: GitCommit,
|
|
Version: ver,
|
|
VersionPrerelease: rel,
|
|
VersionMetadata: md,
|
|
BuildDate: BuildDate,
|
|
}
|
|
}
|
|
|
|
func (c *VersionInfo) VersionNumber() string {
|
|
if Version == "unknown" && VersionPrerelease == "unknown" {
|
|
return "(version unknown)"
|
|
}
|
|
|
|
version := c.Version
|
|
|
|
if c.VersionPrerelease != "" {
|
|
version = fmt.Sprintf("%s-%s", version, c.VersionPrerelease)
|
|
}
|
|
|
|
if c.VersionMetadata != "" {
|
|
version = fmt.Sprintf("%s+%s", version, c.VersionMetadata)
|
|
}
|
|
|
|
return version
|
|
}
|
|
|
|
func (c *VersionInfo) FullVersionNumber(rev bool) string {
|
|
var versionString bytes.Buffer
|
|
|
|
if Version == "unknown" && VersionPrerelease == "unknown" {
|
|
return "Vault (version unknown)"
|
|
}
|
|
|
|
fmt.Fprintf(&versionString, "Vault v%s", c.Version)
|
|
if c.VersionPrerelease != "" {
|
|
fmt.Fprintf(&versionString, "-%s", c.VersionPrerelease)
|
|
}
|
|
|
|
if c.VersionMetadata != "" {
|
|
fmt.Fprintf(&versionString, "+%s", c.VersionMetadata)
|
|
}
|
|
|
|
if rev && c.Revision != "" {
|
|
fmt.Fprintf(&versionString, " (%s)", c.Revision)
|
|
}
|
|
|
|
if c.BuildDate != "" {
|
|
fmt.Fprintf(&versionString, ", built %s", c.BuildDate)
|
|
}
|
|
|
|
return versionString.String()
|
|
}
|