Help us shape the future of Go! Take the 2026 Go Developer Survey

version

package
v0.18.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 30, 2025 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	Version = "dev"     // Default value if not built with ldflags
	Commit  = "none"    // Default value
	Date    = "unknown" // Default value
)

These variables are set at build time using -ldflags They are exported so they can be used by root.go for the --version flag

View Source
var VersionCmd = &cobra.Command{
	Use:   "version",
	Short: "Print the version number of eng and check for updates",
	Long: `All software has versions. This is eng's.
It shows the Git tag, commit hash, build date, Go version, OS/Arch,
and checks GitHub for the latest available release.`,
	Run: func(cmd *cobra.Command, args []string) {
		log.Info("eng version: %s", Version)
		log.Message("  Git Commit: %s", Commit)
		log.Message("  Build Date: %s", Date)
		log.Message("  Go Version: %s", runtime.Version())
		log.Message("  OS/Arch:    %s/%s", runtime.GOOS, runtime.GOARCH)
		log.Message("")

		sp := utils.NewSpinner("Checking for latest version...")
		sp.Start()
		defer sp.Stop()

		latestRelease, err := getLatestRelease(githubRepoOwner, githubRepoName)

		if err != nil {

			log.Warn("Could not check for updates: %v", err)
			return
		}

		if latestRelease == nil || latestRelease.TagName == "" {

			log.Warn("Could not determine latest release version.")
			return
		}

		if Version == "dev" {
			log.Info("Currently running development version.")
			log.Info("Latest release is %s: %s", latestRelease.TagName, latestRelease.HTMLURL)
			return
		}

		currentSemVer, err := semver.NewVersion(Version)
		if err != nil {
			log.Warn("Could not parse current version (%s) for comparison: %v", Version, err)
			log.Info("Latest release is %s: %s", latestRelease.TagName, latestRelease.HTMLURL)
			return
		}

		latestSemVer, err := semver.NewVersion(latestRelease.TagName)
		if err != nil {
			log.Warn("Could not parse latest release tag (%s) for comparison: %v", latestRelease.TagName, err)
			return
		}

		if latestSemVer.GreaterThan(currentSemVer) {
			log.Success("A newer version is available: %s", latestRelease.TagName)
			log.Info("  Get it here: %s", latestRelease.HTMLURL)
		} else if latestSemVer.Equal(currentSemVer) {
			log.Success("You are running the latest version.")
		} else {

			log.Info("You are running a version newer than the latest release (%s).", latestRelease.TagName)
		}
	},
}

VersionCmd represents the version command

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL