github.com/amarpal/go-tools@v0.0.0-20240422043104-40142f59f616/lintcmd/version/version.go (about)

     1  package version
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"path/filepath"
     7  	"runtime"
     8  )
     9  
    10  const Version = "devel"
    11  const MachineVersion = "devel"
    12  
    13  // version returns a version descriptor and reports whether the
    14  // version is a known release.
    15  func version(human, machine string) (human_, machine_ string, known bool) {
    16  	if human != "devel" {
    17  		return human, machine, true
    18  	}
    19  	v, ok := buildInfoVersion()
    20  	if ok {
    21  		return v, "", false
    22  	}
    23  	return "devel", "", false
    24  }
    25  
    26  func Print(human, machine string) {
    27  	human, machine, release := version(human, machine)
    28  
    29  	if release {
    30  		fmt.Printf("%s %s (%s)\n", filepath.Base(os.Args[0]), human, machine)
    31  	} else if human == "devel" {
    32  		fmt.Printf("%s (no version)\n", filepath.Base(os.Args[0]))
    33  	} else {
    34  		fmt.Printf("%s (devel, %s)\n", filepath.Base(os.Args[0]), human)
    35  	}
    36  }
    37  
    38  func Verbose(human, machine string) {
    39  	Print(human, machine)
    40  	fmt.Println()
    41  	fmt.Println("Compiled with Go version:", runtime.Version())
    42  	printBuildInfo()
    43  }