/
mk.go
71 lines (56 loc) · 1.34 KB
/
mk.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
65
66
67
68
69
70
71
package main
import (
"flag"
"os"
"git.fractalqb.de/fractalqb/gomk"
"git.fractalqb.de/fractalqb/qblog"
)
const version = "0.4.1"
var (
cmds = []string{
"cmd/tikflt/tikflt",
"cmd/tikmig/tikmig",
"cmd/tiktak/tiktak",
}
goBuild = gomk.GoBuild{
TrimPath: true,
LDFlags: "-s -w",
SetVars: []string{
"git.fractalqb.de/fractalqb/tiktak/cmd.Version=" + version,
},
}
log = qblog.New(&qblog.DefaultConfig).Logger
writeDot bool
)
func flags() {
fLog := flag.String("log", "", "Set log level")
fInstall := flag.Bool("install", false, "Install commands")
flag.BoolVar(&writeDot, "dot", false, "Write project as graphviz dot file")
flag.Parse()
goBuild.Install = *fInstall
if *fLog != "" {
qblog.DefaultConfig.ParseFlag(*fLog)
}
}
func main() {
flags()
prj := gomk.NewProject(".")
gVulnchk := prj.Goal(gomk.Directory("vulncheck")).
By(&gomk.GoVulncheck{Patterns: []string{"./..."}})
gTest := prj.Goal(gomk.Abstract("test")).
By(&gomk.GoTest{Pkgs: []string{"./..."}}, gVulnchk)
gCmds := prj.Goal(gomk.Abstract("cmds"))
for _, cmd := range cmds {
g := prj.Goal(gomk.File(cmd)).By(&goBuild, gTest)
gCmds.ImpliedBy(g)
}
if writeDot {
prj.WriteDot(os.Stdout)
return
}
builder := gomk.Builder{Env: gomk.DefaultEnv()}
builder.Env.Log = log
if err := builder.Project(prj); err != nil {
log.Error(err.Error())
}
}