consul/version/version.go
hashicorp-copywrite[bot] 5fb9df1640
[COMPLIANCE] License changes (#18443)
* Adding explicit MPL license for sub-package

This directory and its subdirectories (packages) contain files licensed with the MPLv2 `LICENSE` file in this directory and are intentionally licensed separately from the BSL `LICENSE` file at the root of this repository.

* Adding explicit MPL license for sub-package

This directory and its subdirectories (packages) contain files licensed with the MPLv2 `LICENSE` file in this directory and are intentionally licensed separately from the BSL `LICENSE` file at the root of this repository.

* Updating the license from MPL to Business Source License

Going forward, this project will be licensed under the Business Source License v1.1. Please see our blog post for more details at <Blog URL>, FAQ at www.hashicorp.com/licensing-faq, and details of the license at www.hashicorp.com/bsl.

* add missing license headers

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

* Update copyright file headers to BUSL-1.1

---------

Co-authored-by: hashicorp-copywrite[bot] <110428419+hashicorp-copywrite[bot]@users.noreply.github.com>
2023-08-11 09:12:13 -04:00

76 lines
2.0 KiB
Go

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
package version
import (
_ "embed"
"fmt"
"strings"
)
var (
// The git commit that was compiled. These will be filled in by the
// compiler.
GitCommit string
// The next version number that will be released. This will be updated after every release
// Version must conform to the format expected by github.com/hashicorp/go-version
// for tests to work.
// A pre-release marker for the version can also be specified (e.g -dev). If this is omitted
// then it means that it is a final release. Otherwise, this is a pre-release
// such as "dev" (in development), "beta", "rc1", etc.
//go:embed VERSION
fullVersion string
Version, VersionPrerelease, _ = strings.Cut(strings.TrimSpace(fullVersion), "-")
// https://semver.org/#spec-item-10
VersionMetadata = ""
// The date/time of the build (actually the HEAD commit in git, to preserve stability)
// This isn't just informational, but is also used by the licensing system. Default is chosen to be flagantly wrong.
BuildDate string = "1970-01-01T00:00:01Z"
)
// BuildInfo includes all available version info for this build
type BuildInfo struct {
SHA string
BuildDate string
HumanVersion string
FIPS string
}
// GetHumanVersion composes the parts of the version in a way that's suitable
// for displaying to humans.
func GetHumanVersion() string {
version := Version
release := VersionPrerelease
metadata := VersionMetadata
if release != "" {
version += fmt.Sprintf("-%s", release)
}
if IsFIPS() {
version += ".fips1402"
}
if metadata != "" {
version += fmt.Sprintf("+%s", metadata)
}
// Strip off any single quotes added by the git information.
return strings.ReplaceAll(version, "'", "")
}
// GetBuildInfo returns all available version information for this build.
func GetBuildInfo() *BuildInfo {
return &BuildInfo{
SHA: GitCommit,
BuildDate: BuildDate,
HumanVersion: GetHumanVersion(),
FIPS: GetFIPSInfo(),
}
}