@@ -117,7 +117,8 @@ func assembleGoFile(w io.Writer, f *File) {
117117
118118func formatCode (src []byte ) ([]byte , error ) {
119119 // We call goimports because it formats imports better than gofmt, but also
120- // call gofmt because it has the "simplify" logic.
120+ // call gofmt because it has the "simplify" logic. If a gofmt binary is
121+ // not found, we will skip it.
121122 src , err := importsWrapper (src )
122123 if err != nil {
123124 return nil , err
@@ -136,16 +137,24 @@ func importsWrapper(src []byte) ([]byte, error) {
136137}
137138
138139func gofmtWrapper (src []byte ) ([]byte , error ) {
139- cmd := exec .Command ("gofmt" , "-s" )
140+ const gofmt = "gofmt"
141+
142+ if _ , err := exec .LookPath (gofmt ); err != nil {
143+ klog .Errorf ("WARNING: skipping output simplification: %v" , err )
144+ return nil , nil
145+ }
146+
147+ cmd := exec .Command (gofmt , "-s" )
140148 cmd .Stdin = bytes .NewReader (src )
141149 stdout := & bytes.Buffer {}
142150 cmd .Stdout = stdout
143151 stderr := & bytes.Buffer {}
144152 cmd .Stderr = stderr
145153 if err := cmd .Run (); err != nil {
146154 if stderr .Len () > 0 {
147- return nil , fmt .Errorf ("gofmt failed: %v: %s" , err , strings .TrimSpace (stderr .String ()))
155+ return nil , fmt .Errorf ("%s failed: %v: %s" , gofmt , err , strings .TrimSpace (stderr .String ()))
148156 }
157+ return nil , fmt .Errorf ("%s failed: %v" , gofmt , err )
149158 }
150159 return stdout .Bytes (), nil
151160}
0 commit comments