kubo/version.go
2026-02-20 18:21:38 +01:00

69 lines
1.7 KiB
Go

package ipfs
import (
"fmt"
"runtime"
"github.com/ipfs/kubo/core/commands/cmdutils"
)
// CurrentCommit is the current git commit, this is set as a ldflag in the Makefile.
var CurrentCommit string
// taggedRelease is set via ldflag when building from a version-tagged commit
// with a clean tree. When set, the commit hash is omitted from the libp2p
// identify agent version and the HTTP user agent, since the version number
// already identifies the exact source.
var taggedRelease string
// CurrentVersionNumber is the current application's version literal.
const CurrentVersionNumber = "0.40.0-rc2"
const ApiVersion = "/kubo/" + CurrentVersionNumber + "/" //nolint
// RepoVersion is the version number that we are currently expecting to see.
const RepoVersion = 18
// GetUserAgentVersion is the libp2p user agent used by go-ipfs.
func GetUserAgentVersion() string {
// For tagged release builds with a clean tree, the commit hash is
// redundant since the version number identifies the exact source.
commit := CurrentCommit
if taggedRelease != "" {
commit = ""
}
userAgent := "kubo/" + CurrentVersionNumber
if commit != "" {
userAgent += "/" + commit
}
if userAgentSuffix != "" {
userAgent += "/" + userAgentSuffix
}
return cmdutils.CleanAndTrim(userAgent)
}
var userAgentSuffix string
func SetUserAgentSuffix(suffix string) {
userAgentSuffix = cmdutils.CleanAndTrim(suffix)
}
type VersionInfo struct {
Version string
Commit string
Repo string
System string
Golang string
}
func GetVersionInfo() *VersionInfo {
return &VersionInfo{
Version: CurrentVersionNumber,
Commit: CurrentCommit,
Repo: fmt.Sprint(RepoVersion),
System: runtime.GOARCH + "/" + runtime.GOOS, // TODO: Precise version here
Golang: runtime.Version(),
}
}