github.com/JarrahG/buffalocli@v0.0.0-20230801092127-b85bfd5d395a/internal/genny/fix/fix_helpers.go (about)

     1  package fix
     2  
     3  import (
     4  	"fmt"
     5  	"io/fs"
     6  	"path/filepath"
     7  	"strings"
     8  
     9  	"github.com/gobuffalo/genny/v2"
    10  )
    11  
    12  func walkDisk(disk *genny.Disk, root string, walkFun filepath.WalkFunc) error {
    13  	for _, f := range disk.Files() {
    14  		rel, err := filepath.Rel(root, f.Name())
    15  		if err != nil {
    16  			err = walkFun(f.Name(), nil, fmt.Errorf("cannot process file %s: %w", f.Name(), err))
    17  			if err != nil {
    18  				return err
    19  			}
    20  		}
    21  
    22  		if strings.HasPrefix(rel, "..") {
    23  			continue
    24  		}
    25  
    26  		// skip directories that are not part of the buffalo source tree
    27  		for _, prefix := range []string{"vendor", "node_modules", ".git"} {
    28  			if strings.HasPrefix(f.Name(), prefix) {
    29  				return nil
    30  			}
    31  		}
    32  
    33  		file, ok := f.(fs.File)
    34  		if !ok {
    35  			return fmt.Errorf("cannot process file %s: cast failed", f.Name())
    36  		}
    37  
    38  		info, err := file.Stat()
    39  
    40  		err = walkFun(f.Name(), info, err)
    41  		if err != nil {
    42  			return err
    43  		}
    44  	}
    45  
    46  	return nil
    47  }