github.com/rafecolton/buffalo@v0.9.5/generators/docker/docker.go (about)

     1  package docker
     2  
     3  import (
     4  	"path/filepath"
     5  
     6  	"github.com/gobuffalo/buffalo/generators"
     7  	"github.com/gobuffalo/makr"
     8  	"github.com/pkg/errors"
     9  )
    10  
    11  // New Docker generator
    12  func New() (*makr.Generator, error) {
    13  	g := makr.New()
    14  	g.Add(&makr.Func{
    15  		Should: func(data makr.Data) bool {
    16  			if data["docker"] == nil {
    17  				return true
    18  			}
    19  			return data["docker"].(string) != "none"
    20  		},
    21  		Runner: func(root string, data makr.Data) error {
    22  			if data["docker"] == nil {
    23  				data["docker"] = "multi"
    24  			}
    25  			style := data["docker"].(string)
    26  			if style != "multi" && style != "standard" {
    27  				return errors.Errorf("unknown Docker style: %s", style)
    28  			}
    29  			files, err := generators.Find(filepath.Join(generators.TemplatesPath, "docker", style))
    30  			if err != nil {
    31  				return errors.WithStack(err)
    32  			}
    33  			fg := makr.New()
    34  			for _, f := range files {
    35  				fg.Add(makr.NewFile(f.WritePath, f.Body))
    36  			}
    37  			return fg.Run(root, data)
    38  		},
    39  	})
    40  	return g, nil
    41  }