@@ -26,6 +26,8 @@ import (
26
26
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/color"
27
27
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/config"
28
28
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/constants"
29
+ "github.com/GoogleContainerTools/skaffold/pkg/skaffold/event"
30
+ "github.com/GoogleContainerTools/skaffold/pkg/skaffold/server"
29
31
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/update"
30
32
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/version"
31
33
"github.com/pkg/errors"
@@ -44,47 +46,68 @@ var (
44
46
45
47
func NewSkaffoldCommand (out , err io.Writer ) * cobra.Command {
46
48
updateMsg := make (chan string )
49
+ var shutdownAPIServer func () error
47
50
48
51
rootCmd := & cobra.Command {
49
52
Use : "skaffold" ,
50
53
Short : "A tool that facilitates continuous development for Kubernetes applications." ,
51
54
SilenceErrors : true ,
52
- }
53
-
54
- rootCmd .PersistentPreRunE = func (cmd * cobra.Command , args []string ) error {
55
- opts .Command = cmd .Use
55
+ PersistentPreRunE : func (cmd * cobra.Command , args []string ) error {
56
+ cmd .Root ().SilenceUsage = true
56
57
57
- if err := SetUpLogs (err , v ); err != nil {
58
- return err
59
- }
58
+ opts .Command = cmd .Use
60
59
61
- if forceColors {
62
- color .ForceColors ()
63
- }
60
+ // Setup colors
61
+ if forceColors {
62
+ color .ForceColors ()
63
+ }
64
+ color .OverwriteDefault (color .Color (defaultColor ))
64
65
65
- rootCmd .SilenceUsage = true
66
- logrus .Infof ("Skaffold %+v" , version .Get ())
67
- color .OverwriteDefault (color .Color (defaultColor ))
66
+ // Setup logs
67
+ if err := setUpLogs (err , v ); err != nil {
68
+ return err
69
+ }
68
70
69
- if quietFlag {
70
- logrus .Debugf ("Update check is disabled because of quiet mode" )
71
- } else {
72
- go func () {
73
- if err := updateCheck (updateMsg ); err != nil {
74
- logrus .Infof ("update check failed: %s" , err )
75
- }
76
- }()
77
- }
71
+ // Start API Server
72
+ if cmd .Use == "dev" {
73
+ // TODO(dgageot): api server is always started in dev mode, right now.
74
+ // It should instead default to true.
75
+ opts .EnableRPC = true
76
+ }
77
+ shutdown , err := server .Initialize (opts )
78
+ if err != nil {
79
+ return errors .Wrap (err , "initializing api server" )
80
+ }
81
+ shutdownAPIServer = shutdown
82
+
83
+ // Print version
84
+ version := version .Get ()
85
+ logrus .Infof ("Skaffold %+v" , version )
86
+ event .LogSkaffoldMetadata (version )
87
+
88
+ if quietFlag {
89
+ logrus .Debugf ("Update check is disabled because of quiet mode" )
90
+ } else {
91
+ go func () {
92
+ if err := updateCheck (updateMsg ); err != nil {
93
+ logrus .Infof ("update check failed: %s" , err )
94
+ }
95
+ }()
96
+ }
78
97
79
- return nil
80
- }
98
+ return nil
99
+ },
100
+ PersistentPostRun : func (cmd * cobra.Command , args []string ) {
101
+ select {
102
+ case msg := <- updateMsg :
103
+ fmt .Fprintf (out , "%s\n " , msg )
104
+ default :
105
+ }
81
106
82
- rootCmd .PersistentPostRun = func (cmd * cobra.Command , args []string ) {
83
- select {
84
- case msg := <- updateMsg :
85
- fmt .Fprintf (out , "%s\n " , msg )
86
- default :
87
- }
107
+ if shutdownAPIServer != nil {
108
+ shutdownAPIServer ()
109
+ }
110
+ },
88
111
}
89
112
90
113
SetUpFlags ()
@@ -158,9 +181,9 @@ func FlagToEnvVarName(f *pflag.Flag) string {
158
181
return fmt .Sprintf ("SKAFFOLD_%s" , strings .Replace (strings .ToUpper (f .Name ), "-" , "_" , - 1 ))
159
182
}
160
183
161
- func SetUpLogs (out io.Writer , level string ) error {
184
+ func setUpLogs (out io.Writer , level string ) error {
162
185
logrus .SetOutput (out )
163
- lvl , err := logrus .ParseLevel (v )
186
+ lvl , err := logrus .ParseLevel (level )
164
187
if err != nil {
165
188
return errors .Wrap (err , "parsing log level" )
166
189
}
0 commit comments