github.com/wawandco/ox@v0.13.6-0.20230809142027-913b3d837f2a/internal/source/imports.go (about) 1 package source 2 3 import ( 4 "bytes" 5 "os" 6 "path/filepath" 7 8 "golang.org/x/tools/imports" 9 ) 10 11 func RunImports(root string) error { 12 err := filepath.Walk(root, func(path string, info os.FileInfo, _ error) error { 13 if info.IsDir() || filepath.Ext(info.Name()) != ".go" { 14 return nil 15 } 16 17 src, err := os.ReadFile(path) 18 if err != nil { 19 return err 20 } 21 22 res, err := imports.Process(path, src, nil) 23 if err != nil { 24 return err 25 } 26 27 if bytes.Equal(src, res) { 28 return nil 29 } 30 31 return os.WriteFile(path, res, 0644) 32 }) 33 34 return err 35 }