From 3b3f3665d3dcae0319bca4c4c80d693f31bdf9a9 Mon Sep 17 00:00:00 2001 From: Kenneth Shaw Date: Thu, 3 Oct 2019 07:44:02 +0700 Subject: [PATCH] Convert exec.Command for gofmt to standard go/format package Converts exec.Command call for formatting the generated Go code from the bootstrapper to use the standard `go/format` package for formatting. Fixes an issue / problem that the `cdproto-gen` tool is encountering. --- bootstrap/bootstrap.go | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/bootstrap/bootstrap.go b/bootstrap/bootstrap.go index a461bf1..134244b 100644 --- a/bootstrap/bootstrap.go +++ b/bootstrap/bootstrap.go @@ -7,6 +7,7 @@ package bootstrap import ( "fmt" + "go/format" "io/ioutil" "os" "os/exec" @@ -176,18 +177,21 @@ func (g *Generator) Run() error { if err = cmd.Run(); err != nil { return err } - f.Close() - if !g.NoFormat { - cmd = exec.Command("gofmt", "-w", f.Name()) - cmd.Stderr = os.Stderr - cmd.Stdout = os.Stdout - - if err = cmd.Run(); err != nil { - return err - } + // move unformatted file to out path + if g.NoFormat { + return os.Rename(f.Name(), g.OutName) } - return os.Rename(f.Name(), g.OutName) + // format file and write to out path + in, err := ioutil.ReadFile(f.Name()) + if err != nil { + return err + } + out, err := format.Source(in) + if err != nil { + return err + } + return ioutil.WriteFile(g.OutName, out, 0644) }