package cli import ( "context" "flag" "fmt" "io" "gitea.maximumdirect.net/eric/distributor/internal/app" ) func versionCommand(_ context.Context, args []string, stdout, stderr io.Writer) int { if hasHelp(args) { printVersionHelp(stdout) return exitOK } flags := flag.NewFlagSet("version", flag.ContinueOnError) flags.SetOutput(stderr) formatFlag := addFormatFlag(flags) if err := flags.Parse(args); err != nil { return exitUsage } if rejectExtraArgs(stderr, "version", flags.Args()) { return exitUsage } format, ok := parseOutputFormat(stderr, "version", *formatFlag) if !ok { return exitUsage } if app.IsJSONOutput(format) { err := app.WriteJSONEnvelope(stdout, "version", true, nil, versionResult{ Application: app.Name, Version: app.Version, }, nil) if err != nil { return fail(stderr, err) } return exitOK } fmt.Fprintln(stdout, app.VersionString()) return exitOK } type versionResult struct { Application string `json:"application"` Version string `json:"version"` } func printVersionHelp(w io.Writer) { fmt.Fprint(w, `Usage: distributor version [--format text|json] Options: --format text|json Output format Print version information. `) }