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