This repository has been archived by the owner on Jun 30, 2022. It is now read-only.
/
ci.go
64 lines (50 loc) · 1.42 KB
/
ci.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package ci
import (
"fmt"
"html/template"
"github.com/gobuffalo/genny"
"github.com/gobuffalo/genny/gogen"
"github.com/gobuffalo/packr/v2"
)
// New generator for adding travis or gitlab
func New(opts *Options) (*genny.Generator, error) {
g := genny.New()
if err := opts.Validate(); err != nil {
return g, err
}
g.Transformer(genny.Replace("-no-pop", ""))
g.Transformer(genny.Dot())
box := packr.New("buffalo:genny:ci", "../ci/templates")
var fname string
switch opts.Provider {
case "travis", "travis-ci":
fname = "-dot-travis.yml.tmpl"
case "gitlab", "gitlab-ci":
if opts.App.WithPop {
fname = "-dot-gitlab-ci.yml.tmpl"
} else {
fname = "-dot-gitlab-ci-no-pop.yml.tmpl"
}
default:
return g, fmt.Errorf("could not find a template for %s", opts.Provider)
}
f, err := box.FindString(fname)
if err != nil {
return g, err
}
g.File(genny.NewFileS(fname, f))
data := map[string]interface{}{
"opts": opts,
}
if opts.DBType == "postgres" {
data["testDbUrl"] = "postgres://postgres:postgres@postgres:5432/" + opts.App.Name.File().String() + "_test?sslmode=disable"
} else if opts.DBType == "mysql" {
data["testDbUrl"] = "mysql://root:root@(mysql:3306)/" + opts.App.Name.File().String() + "_test?parseTime=true&multiStatements=true&readTimeout=1s"
} else {
data["testDbUrl"] = ""
}
helpers := template.FuncMap{}
t := gogen.TemplateTransformer(data, helpers)
g.Transformer(t)
return g, nil
}