tailscale/version/print.go
Brad Fitzpatrick f2e7d13b7c lanscaping: use sync.OnceValue and not types/lazy versions that predate it
Change-Id: I42e2627fc731645e9462ea36afe6a57faa6eb73f
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2025-01-11 11:39:33 -08:00

33 lines
738 B
Go

// Copyright (c) Tailscale Inc & AUTHORS
// SPDX-License-Identifier: BSD-3-Clause
package version
import (
"fmt"
"runtime"
"strings"
"sync"
)
var stringLazy = sync.OnceValue(func() string {
var ret strings.Builder
ret.WriteString(Short())
ret.WriteByte('\n')
if IsUnstableBuild() {
fmt.Fprintf(&ret, " track: unstable (dev); frequent updates and bugs are likely\n")
}
if gitCommit() != "" {
fmt.Fprintf(&ret, " tailscale commit: %s%s\n", gitCommit(), dirtyString())
}
if extraGitCommitStamp != "" {
fmt.Fprintf(&ret, " other commit: %s\n", extraGitCommitStamp)
}
fmt.Fprintf(&ret, " go version: %s\n", runtime.Version())
return strings.TrimSpace(ret.String())
})
func String() string {
return stringLazy()
}