Skip to content

Commit

Permalink
version: imp verbose output
Browse files Browse the repository at this point in the history
  • Loading branch information
EugeneOne1 committed Mar 30, 2021
1 parent b2b41d4 commit c8206b0
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 30 deletions.
2 changes: 1 addition & 1 deletion internal/home/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ var versionArg = arg{
effect: func(o options, exec string) (effect, error) {
return func() error {
if o.verbose {
version.Verbose()
fmt.Println(version.Verbose())
} else {
fmt.Println(version.Full())
}
Expand Down
67 changes: 38 additions & 29 deletions internal/version/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,12 @@ func Channel() (v string) {
return channel
}

// verFmt defines the format of full version output.
const verFmt = "AdGuard Home\nVersion: %s\nChannel: %s"
// vFmtFull defines the format of full version output.
const vFmtFull = "AdGuard Home, version %s"

// Full returns the full current version of AdGuard Home.
func Full() (v string) {
return fmt.Sprintf(verFmt, version, channel)
return fmt.Sprintf(vFmtFull, version)
}

// GOARM returns the GOARM value used to build the current AdGuard Home release.
Expand Down Expand Up @@ -123,19 +123,25 @@ func fmtModule(m *debug.Module) (formatted string) {

// Constants defining the headers of build information message.
const (
buildInfoGoHdr = "Go version: "
buildInfoTimeHdr = "Build time: "
buildInfoRaceHdr = "Race: "
buildInfoGOOSHdr = "GOOS: " + runtime.GOOS
buildInfoGOARCHHdr = "GOARCH: " + runtime.GOARCH
buildInfoGOARMHdr = "GOARM: "
buildInfoGOMIPSHdr = "GOMIPS: "
buildInfoMainHdr = "Main module:"
buildInfoDepsHdr = "Dependencies:"
vFmtAGHHdr = "AdGuard Home"
vFmtVerHdr = "Version: "
vFmtChanHdr = "Channel: "
vFmtGoHdr = "Go version: "
vFmtTimeHdr = "Build time: "
vFmtRaceHdr = "Race: "
vFmtGOOSHdr = "GOOS: " + runtime.GOOS
vFmtGOARCHHdr = "GOARCH: " + runtime.GOARCH
vFmtGOARMHdr = "GOARM: "
vFmtGOMIPSHdr = "GOMIPS: "
vFmtMainHdr = "Main module:"
vFmtDepsHdr = "Dependencies:"
)

// buildInfoStr prints formatted build information into w. Output example:
// Verbose prints formatted build information into w. Output example:
//
// AdGuard Home
// Version: v0.105.3
// Channel: development
// Go version: go1.15.3
// Build time: 2021-03-30T16:26:08Z+0300
// GOOS: darwin
Expand All @@ -146,32 +152,41 @@ const (
// Dependencies:
// ...
//
func buildInfoStr() (infoStr string) {
// TODO(e.burkov): Make it work into passed io.Writer.
func Verbose() (v string) {
b := &strings.Builder{}

writeString(b, buildInfoGoHdr)
writeString(b, vFmtAGHHdr)
writeRune(b, nl)
writeString(b, vFmtVerHdr)
writeString(b, version)
writeRune(b, nl)
writeString(b, vFmtChanHdr)
writeString(b, channel)
writeRune(b, nl)
writeString(b, vFmtGoHdr)
writeString(b, runtime.Version())
if buildtime != "" {
writeRune(b, nl)
writeString(b, buildInfoTimeHdr)
writeString(b, vFmtTimeHdr)
writeString(b, buildtime)
}
writeRune(b, nl)
writeString(b, buildInfoGOOSHdr)
writeString(b, vFmtGOOSHdr)
writeRune(b, nl)
writeString(b, buildInfoGOARCHHdr)
writeString(b, vFmtGOARCHHdr)
if goarm != "" {
writeRune(b, nl)
writeString(b, buildInfoGOARMHdr)
writeString(b, vFmtGOARMHdr)
writeString(b, " v")
writeString(b, goarm)
} else if gomips != "" {
writeRune(b, nl)
writeString(b, buildInfoGOMIPSHdr)
writeString(b, vFmtGOMIPSHdr)
writeString(b, gomips)
}
writeRune(b, nl)
writeString(b, buildInfoRaceHdr)
writeString(b, vFmtRaceHdr)
writeString(b, strconv.FormatBool(isRace))

info, ok := debug.ReadBuildInfo()
Expand All @@ -180,7 +195,7 @@ func buildInfoStr() (infoStr string) {
}

writeRune(b, nl)
writeString(b, buildInfoMainHdr)
writeString(b, vFmtMainHdr)
writeString(b, nltb)
writeString(b, fmtModule(&info.Main))

Expand All @@ -189,7 +204,7 @@ func buildInfoStr() (infoStr string) {
}

writeRune(b, nl)
writeString(b, buildInfoDepsHdr)
writeString(b, vFmtDepsHdr)
for _, dep := range info.Deps {
if depStr := fmtModule(dep); depStr != "" {
writeString(b, nltb)
Expand All @@ -199,9 +214,3 @@ func buildInfoStr() (infoStr string) {

return b.String()
}

// Verbose prints the full version with additional building information.
func Verbose() {
fmt.Println(Full())
fmt.Println(buildInfoStr())
}

0 comments on commit c8206b0

Please sign in to comment.