@@ -15,6 +15,7 @@ import (
1515 "github.com/pkg/errors"
1616)
1717
18+ // Exit codes
1819const (
1920 exitOK = iota
2021 exitOpenFile
@@ -25,6 +26,7 @@ const (
2526 exitJSONEncode
2627)
2728
29+ // Output colors
2830var (
2931 strColor = color .New (color .FgYellow )
3032 braceColor = color .New (color .FgMagenta )
3335 boolColor = color .New (color .FgCyan )
3436)
3537
38+ // gronVersion stores the current gron version, set at build
39+ // time with the ldflags -X option
40+ var gronVersion = "dev"
41+
3642func init () {
3743 flag .Usage = func () {
3844 h := "Transform JSON (from a file, URL, or stdin) into discrete assignments to make it greppable\n \n "
@@ -42,7 +48,8 @@ func init() {
4248
4349 h += "Options:\n "
4450 h += " -u, --ungron Reverse the operation (turn assignments back into JSON)\n "
45- h += " -m, --monochrome Monochrome (don't colorize output)\n \n "
51+ h += " -m, --monochrome Monochrome (don't colorize output)\n "
52+ h += " --version Print version information\n \n "
4653
4754 h += "Exit Codes:\n "
4855 h += fmt .Sprintf (" %d\t %s\n " , exitOK , "OK" )
@@ -68,15 +75,23 @@ func main() {
6875 var (
6976 ungronFlag bool
7077 monochromeFlag bool
78+ versionFlag bool
7179 )
7280
7381 flag .BoolVar (& ungronFlag , "ungron" , false , "Turn statements into JSON instead" )
7482 flag .BoolVar (& ungronFlag , "u" , false , "Turn statements into JSON instead" )
7583 flag .BoolVar (& monochromeFlag , "monochrome" , false , "Monochrome (don't colorize output)" )
7684 flag .BoolVar (& monochromeFlag , "m" , false , "Monochrome (don't colorize output)" )
85+ flag .BoolVar (& versionFlag , "version" , false , "Print version information" )
7786
7887 flag .Parse ()
7988
89+ // Print version information
90+ if versionFlag {
91+ fmt .Printf ("gron version %s\n " , gronVersion )
92+ os .Exit (exitOK )
93+ }
94+
8095 var raw io.Reader
8196
8297 filename := flag .Arg (0 )
0 commit comments