...
1
16
17 package version
18
19 import (
20 "fmt"
21
22 "github.com/spf13/cobra"
23 )
24
25
26
27
28
29
30
31 func Version() *cobra.Command {
32 return version("")
33 }
34
35
36
37
38
39
40
41 func WithFont(fontName string) *cobra.Command {
42 return version(fontName)
43 }
44
45 func version(fontName string) *cobra.Command {
46 var outputJSON bool
47 cmd := &cobra.Command{
48 Use: "version",
49 Short: "Prints the version",
50 RunE: func(cmd *cobra.Command, args []string) error {
51 v := GetVersionInfo()
52 v.Name = cmd.Root().Name()
53 v.Description = cmd.Root().Short
54
55 v.FontName = ""
56 if fontName != "" && v.CheckFontName(fontName) {
57 v.FontName = fontName
58 }
59 cmd.SetOut(cmd.OutOrStdout())
60
61 if outputJSON {
62 out, err := v.JSONString()
63 if err != nil {
64 return fmt.Errorf("unable to generate JSON from version info: %w", err)
65 }
66 cmd.Println(out)
67 } else {
68 cmd.Println(v.String())
69 }
70 return nil
71 },
72 }
73
74 cmd.Flags().BoolVar(&outputJSON, "json", false, "print JSON instead of text")
75
76 return cmd
77 }
78
View as plain text