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  }