63 lines
1.3 KiB
Go
63 lines
1.3 KiB
Go
// Copyright 2025 eat-pray-ai & OpenWaygate
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package cmd
|
|
|
|
import (
|
|
"runtime/debug"
|
|
|
|
"github.com/savioxavier/termlink"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
const (
|
|
verShort = "Show the version of yutu"
|
|
verLong = "Show the version of yutu."
|
|
repo = "Github/eat-pray-ai/yutu"
|
|
repoUrl = "https://github.com/eat-pray-ai/yutu"
|
|
)
|
|
|
|
var (
|
|
Version = ""
|
|
Commit = ""
|
|
CommitDate = ""
|
|
Os = ""
|
|
Arch = ""
|
|
Builder = "Gopher"
|
|
)
|
|
|
|
var versionCmd = &cobra.Command{
|
|
Use: "version",
|
|
Short: verShort,
|
|
Long: verLong,
|
|
Run: func(cmd *cobra.Command, _ []string) {
|
|
info, ok := debug.ReadBuildInfo()
|
|
if ok && Version == "" {
|
|
Version = info.Main.Version
|
|
|
|
settings := make(map[string]string)
|
|
for _, setting := range info.Settings {
|
|
settings[setting.Key] = setting.Value
|
|
}
|
|
|
|
if val, exists := settings["vcs.time"]; exists {
|
|
CommitDate = val
|
|
}
|
|
if val, exists := settings["GOOS"]; exists {
|
|
Os = val
|
|
}
|
|
if val, exists := settings["GOARCH"]; exists {
|
|
Arch = val
|
|
}
|
|
}
|
|
|
|
cmd.Printf("🐰yutu %s %s/%s\n", Version, Os, Arch)
|
|
cmd.Printf("📦build %s-%s\n", Builder, CommitDate)
|
|
cmd.Printf("🌟Star: %s\n", termlink.Link(repo, repoUrl))
|
|
},
|
|
}
|
|
|
|
func init() {
|
|
RootCmd.AddCommand(versionCmd)
|
|
}
|