@@ -70,6 +70,7 @@ import (
70
70
"os"
71
71
"os/signal"
72
72
"path/filepath"
73
+ "runtime/debug"
73
74
"strings"
74
75
"sync"
75
76
"syscall"
@@ -82,11 +83,21 @@ import (
82
83
const defaultProcfile = "Procfile"
83
84
84
85
func main () {
86
+ version := "v3"
87
+ if info , ok := debug .ReadBuildInfo (); ok {
88
+ subversion := info .Main .Version
89
+ for _ , setting := range info .Settings {
90
+ if setting .Key == "vcs.revision" {
91
+ subversion += "-" + setting .Value
92
+ }
93
+ }
94
+ version += " (" + subversion + ")"
95
+ }
85
96
log .SetFlags (0 )
86
97
log .SetPrefix ("runner: " )
87
98
flagset := flag .NewFlagSet ("runner" , flag .ContinueOnError )
88
99
flagset .Usage = func () {
89
- fmt .Fprintln (flagset .Output (), "runner - a simple Procfile runner (v3)" )
100
+ fmt .Fprintln (flagset .Output (), "runner - a simple Procfile runner " + version )
90
101
fmt .Fprintln (flagset .Output (), "" )
91
102
fmt .Fprintln (flagset .Output (), "Usage:" )
92
103
fmt .Fprintln (flagset .Output (), " " , os .Args [0 ], "[options] [Procfile]" )
@@ -101,11 +112,16 @@ func main() {
101
112
flagset .String ("only" , "" , "only runs some of the process types, format: `procTypeA procTypeB procTypeN`" )
102
113
flagset .String ("optional" , "" , "forcefully runs some of the process types, format: `procTypeA procTypeB procTypeN`" )
103
114
flagset .String ("filter" , "" , "service name to filter message" )
115
+ flagset .Bool ("version" , false , "prints version and exit" )
104
116
if err := flagset .Parse (os .Args [1 :]); err == flag .ErrHelp {
105
117
return
106
118
} else if err != nil {
107
119
log .Fatal (err )
108
120
}
121
+ if flagset .Lookup ("version" ).Value .String () == "true" {
122
+ log .Println (version )
123
+ return
124
+ }
109
125
if flagset .Arg (0 ) == "logs" {
110
126
err := logs (flagset )
111
127
if err != nil {
0 commit comments