gogcli/internal/cmd/version.go
2025-12-31 17:24:31 +01:00

48 lines
976 B
Go

package cmd
import (
"context"
"fmt"
"os"
"strings"
"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))
}
type VersionCmd struct{}
func (c *VersionCmd) Run(ctx context.Context) error {
if outfmt.IsJSON(ctx) {
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
}