github.com/inturn/pre-commit-gobuild@v1.0.12/hooks/go-goimports/go-goimports.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "log" 7 "os" 8 "os/exec" 9 "strings" 10 "sync" 11 12 "github.com/inturn/pre-commit-gobuild/internal/helpers" 13 ) 14 15 func main() { 16 workDir, err := os.Getwd() 17 if err != nil { 18 log.Fatal(err) 19 } 20 dirs := helpers.DirsWith(workDir, "\\.go$") 21 22 wg := &sync.WaitGroup{} 23 24 for _, dir := range dirs { 25 wg.Add(1) 26 go func(d, wd string) { 27 defer wg.Done() 28 if !strings.Contains(d, "/vendor/") { 29 files, err := ioutil.ReadDir(d) 30 if err != nil { 31 log.Printf("error occured on read dir %s: %s", d, err) 32 } 33 for _, f := range files { 34 if !strings.HasSuffix(f.Name(), ".go") { 35 continue 36 } 37 cmd := exec.Command("goimports", "-w", "-l", fmt.Sprintf("%s/%s", d, f.Name())) 38 if _, err := cmd.Output(); err != nil { 39 log.Printf("error occured on goimports execute: %s\n", err) 40 } 41 } 42 } 43 }(dir, workDir) 44 } 45 wg.Wait() 46 }