// Package version contains AdGuard Home version information. package version import ( "fmt" "runtime" ) // These are set by the linker. Unfortunately we cannot set constants during // linking, and Go doesn't have a concept of immutable variables, so to be // thorough we have to only export them through getters. // // TODO(a.garipov): Find out if we can get GOARM and GOMIPS values the same way // we can GOARCH and GOOS. var ( channel string = ChannelDevelopment goarm string gomips string version string ) // Channel constants. const ( ChannelDevelopment = "development" ChannelEdge = "edge" ChannelBeta = "beta" ChannelRelease = "release" ) // Channel returns the current AdGuard Home release channel. func Channel() (v string) { return channel } // Full returns the full current version of AdGuard Home. func Full() (v string) { msg := "AdGuard Home, version %s, channel %s, arch %s %s" if goarm != "" { msg = msg + " v" + goarm } else if gomips != "" { msg = msg + " " + gomips } return fmt.Sprintf(msg, version, channel, runtime.GOOS, runtime.GOARCH) } // GOARM returns the GOARM value used to build the current AdGuard Home release. func GOARM() (v string) { return goarm } // GOMIPS returns the GOMIPS value used to build the current AdGuard Home // release. func GOMIPS() (v string) { return gomips } // Version returns the AdGuard Home build version. func Version() (v string) { return version }