gogcli/internal/cmd/version.go
2025-12-26 10:15:12 +00:00

53 lines
1.1 KiB
Go

package cmd
import (
"fmt"
"os"
"strings"
"github.com/spf13/cobra"
"github.com/steipete/gogcli/internal/outfmt"
)
var (
version = "dev"
commit = ""
date = ""
)
func VersionString() string {
v := strings.TrimSpace(version)
if v == "" {
v = "dev"
}
if strings.TrimSpace(commit) == "" && strings.TrimSpace(date) == "" {
return v
}
if strings.TrimSpace(commit) == "" {
return fmt.Sprintf("%s (%s)", v, strings.TrimSpace(date))
}
if strings.TrimSpace(date) == "" {
return fmt.Sprintf("%s (%s)", v, strings.TrimSpace(commit))
}
return fmt.Sprintf("%s (%s %s)", v, strings.TrimSpace(commit), strings.TrimSpace(date))
}
func newVersionCmd() *cobra.Command {
return &cobra.Command{
Use: "version",
Short: "Print version",
Args: cobra.NoArgs,
RunE: func(cmd *cobra.Command, _ []string) error {
if outfmt.IsJSON(cmd.Context()) {
return outfmt.WriteJSON(os.Stdout, map[string]any{
"version": strings.TrimSpace(version),
"commit": strings.TrimSpace(commit),
"date": strings.TrimSpace(date),
})
}
fmt.Fprintln(os.Stdout, VersionString())
return nil
},
}
}