/
main.go
67 lines (55 loc) · 1.33 KB
/
main.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
package main
import (
"flag"
"io/ioutil"
"log"
"os"
"path/filepath"
"github.com/emerald-ci/test-runner/project"
)
func main() {
var projectName string
var configFile string
flag.StringVar(&projectName, "project", "project", "Prefix for the container names")
flag.StringVar(&configFile, "file", ".emerald.yml", "Config file (default `.emerald.yml`)")
flag.Parse()
var configContent = []byte{}
stat, err := os.Stdin.Stat()
if err == nil && (stat.Mode()&os.ModeCharDevice) == 0 {
configContent, err = ioutil.ReadAll(os.Stdin)
if err != nil {
log.Fatal(err)
}
}
if err != nil {
log.Fatal(err)
}
if len(configContent) == 0 {
fileName, _ := filepath.Abs(configFile)
configContent, err = ioutil.ReadFile(fileName)
if err != nil {
log.Fatal(err)
}
}
buildConfig, err := project.BuildProjectConfig(configContent)
if err != nil {
log.Fatal(err)
}
composeProject, err := project.BuildComposeProject(projectName, buildConfig.ComposeFile)
if err != nil {
log.Fatal(err)
}
exitCode, err := composeProject.Run(buildConfig.Service, buildConfig.CommandParts())
if err != nil {
log.Fatal(err)
}
composeProject, err = project.BuildComposeProject(projectName, buildConfig.ComposeFile)
if err != nil {
log.Fatal(err)
}
err = composeProject.Delete()
if err != nil {
log.Fatal(err)
}
os.Exit(exitCode)
}