github.com/golangci/gofmt@v0.0.0-20231018234816-f50ced29576e/goimports/golangci.go (about) 1 package goimports 2 3 import ( 4 "bytes" 5 "fmt" 6 "os" 7 8 "golang.org/x/tools/imports" 9 ) 10 11 // Run runs goimports. 12 // The local prefixes (comma separated) must be defined through the global variable imports.LocalPrefix. 13 func Run(filename string) ([]byte, error) { 14 src, err := os.ReadFile(filename) 15 if err != nil { 16 return nil, err 17 } 18 19 res, err := imports.Process(filename, src, nil) 20 if err != nil { 21 return nil, err 22 } 23 24 if bytes.Equal(src, res) { 25 return nil, nil 26 } 27 28 // formatting has changed 29 data, err := diff(src, res, filename) 30 if err != nil { 31 return nil, fmt.Errorf("error computing diff: %s", err) 32 } 33 34 return data, nil 35 }