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  }