...
1 package edit
2
3 import (
4 "bytes"
5 "fmt"
6 "os"
7 "os/exec"
8
9 "github.com/bazelbuild/buildtools/build"
10 )
11
12 type defaultBuildifier struct{}
13
14
15
16
17 func (b *defaultBuildifier) Buildify(opts *Options, f *build.File) ([]byte, error) {
18 if opts.Buildifier == "" {
19
20
21
22 contents := build.Format(f)
23 newF, err := build.Parse(f.Path, contents)
24 if err != nil {
25 return nil, err
26 }
27 return build.Format(newF), nil
28 }
29
30 cmd := exec.Command(opts.Buildifier, "--type=build")
31 data := build.Format(f)
32 cmd.Stdin = bytes.NewBuffer(data)
33 stdout := bytes.NewBuffer(nil)
34 stderr := bytes.NewBuffer(nil)
35 cmd.Stdout = stdout
36 cmd.Stderr = stderr
37 cmd.Env = append(
38 os.Environ(),
39
40 )
41 err := cmd.Run()
42 if stderr.Len() > 0 {
43 return nil, fmt.Errorf("%s", stderr.Bytes())
44 }
45 if err != nil {
46 return nil, err
47 }
48 return stdout.Bytes(), nil
49 }
50
View as plain text