github.com/segakazzz/buffalo@v0.16.22-0.20210119082501-1f52048d3feb/buffalo/cmd/fix/runner.go (about) 1 package fix 2 3 import ( 4 "fmt" 5 "os" 6 "os/exec" 7 8 "github.com/gobuffalo/buffalo/runtime" 9 "github.com/gobuffalo/meta" 10 ) 11 12 // Check interface for runnable checker functions 13 type Check func(*Runner) error 14 15 // Runner will run all compatible checks 16 type Runner struct { 17 App meta.App 18 Warnings []string 19 } 20 21 // Run all compatible checks 22 func Run() error { 23 fmt.Printf("! This updater will attempt to update your application to Buffalo version: %s\n", runtime.Version) 24 if !ask("Do you wish to continue?") { 25 fmt.Println("~~~ cancelling update ~~~") 26 return nil 27 } 28 29 r := &Runner{ 30 App: meta.New("."), 31 Warnings: []string{}, 32 } 33 34 defer func() { 35 if len(r.Warnings) == 0 { 36 return 37 } 38 39 fmt.Println("\n\n----------------------------") 40 fmt.Printf("!!! (%d) Warnings Were Found !!!\n\n", len(r.Warnings)) 41 for _, w := range r.Warnings { 42 fmt.Printf("[WARNING]: %s\n", w) 43 } 44 }() 45 46 for _, c := range checks { 47 if r.App.WithModules { 48 cmd := exec.Command("go", "mod", "tidy") 49 cmd.Stderr = os.Stderr 50 if err := cmd.Run(); err != nil { 51 return err 52 } 53 } 54 if err := c(r); err != nil { 55 return err 56 } 57 } 58 return nil 59 }