github.com/tonto/cli@v0.0.0-20180104210444-aec958fa47db/walker.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"path/filepath"
     7  )
     8  
     9  // WalkFuncsFunc good name huh?
    10  type walkFuncsFunc func(path string, ff *funcfile, err error) error
    11  
    12  // walkFuncs is similar to filepath.Walk except only returns func.yaml's (so on per function)
    13  func walkFuncs(root string, walkFn walkFuncsFunc) error {
    14  	return filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
    15  		if err != nil {
    16  			// logging this so we can figure out any common issues
    17  			fmt.Println("error walking filesystem:", err)
    18  			return err
    19  		}
    20  		// was `path != wd` necessary?
    21  		if info.IsDir() {
    22  			return nil
    23  		}
    24  
    25  		if !isFuncfile(path, info) {
    26  			return nil
    27  		}
    28  
    29  		// TODO: test/try this again to speed up deploys.
    30  		if false && !isstale(path) {
    31  			return nil
    32  		}
    33  		// Then we found a func file, so let's deploy it:
    34  		ff, err := parseFuncfile(path)
    35  		// if err != nil {
    36  		// return err
    37  		// }
    38  		return walkFn(path, ff, err)
    39  	})
    40  }