github.com/segakazzz/buffalo@v0.16.22-0.20210119082501-1f52048d3feb/buffalo/cmd/fix/docker.go (about)

     1  package fix
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"path/filepath"
     7  	"regexp"
     8  	"strings"
     9  
    10  	"github.com/gobuffalo/buffalo/runtime"
    11  	"github.com/gobuffalo/genny/v2"
    12  )
    13  
    14  func fixDocker(r *Runner) error {
    15  	app := r.App
    16  	if !app.WithDocker {
    17  		return nil
    18  	}
    19  	fmt.Println("~~~ Upgrading Dockerfile ~~~")
    20  	run := genny.WetRunner(context.Background())
    21  	run.WithRun(func(r *genny.Runner) error {
    22  		dk, err := r.FindFile(filepath.Join(app.Root, "Dockerfile"))
    23  		if err != nil {
    24  			return err
    25  		}
    26  
    27  		ex := regexp.MustCompile(`(v[0-9.][\S]+)`)
    28  		lines := strings.Split(dk.String(), "\n")
    29  		for i, l := range lines {
    30  			if strings.HasPrefix(strings.ToLower(l), "from gobuffalo/buffalo") {
    31  				l = ex.ReplaceAllString(l, runtime.Version)
    32  				lines[i] = l
    33  			}
    34  		}
    35  		return r.File(genny.NewFileS(dk.Name(), strings.Join(lines, "\n")))
    36  	})
    37  	return run.Run()
    38  }