github.com/segakazzz/buffalo@v0.16.22-0.20210119082501-1f52048d3feb/genny/build/cleanup.go (about) 1 package build 2 3 import ( 4 "os" 5 "os/exec" 6 "path/filepath" 7 8 "github.com/gobuffalo/envy" 9 "github.com/gobuffalo/genny/v2" 10 "github.com/gobuffalo/packr/v2/jam" 11 ) 12 13 // Cleanup all of the generated files 14 func Cleanup(opts *Options) genny.RunFn { 15 return func(r *genny.Runner) error { 16 defer os.RemoveAll(filepath.Join(opts.Root, "a")) 17 if err := jam.Clean(); err != nil { 18 return err 19 } 20 21 var err error 22 opts.rollback.Range(func(k, v interface{}) bool { 23 f := genny.NewFileS(k.(string), v.(string)) 24 r.Logger.Debugf("Rollback: %s", f.Name()) 25 if err = r.File(f); err != nil { 26 return false 27 } 28 r.Disk.Remove(f.Name()) 29 return true 30 }) 31 if err != nil { 32 return err 33 } 34 for _, f := range r.Disk.Files() { 35 if _, keep := opts.keep.Load(f.Name()); keep { 36 // Keep this file 37 continue 38 } 39 r.Disk.Delete(f.Name()) 40 } 41 if envy.Mods() && opts.WithBuildDeps { 42 if err := r.Exec(exec.Command("go", "mod", "tidy")); err != nil { 43 return err 44 } 45 } 46 return nil 47 } 48 }