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  }