/
compose.go
100 lines (79 loc) · 2.13 KB
/
compose.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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package cmd
import (
"io/ioutil"
"os"
"github.com/aanand/compose-file/loader"
"github.com/aanand/compose-file/types"
"github.com/spf13/cobra"
)
func buildConfigDetails(source types.Dict) types.ConfigDetails {
workingDir, err := os.Getwd()
if err != nil {
panic(err)
}
return types.ConfigDetails{
WorkingDir: workingDir,
ConfigFiles: []types.ConfigFile{
{Filename: "filename.yml", Config: source},
},
Environment: nil,
}
}
func load(fileYmlName string) (*types.Config, error) {
bytes, err := ioutil.ReadFile(fileYmlName)
if err != nil {
return nil, err
}
dict, err := loader.ParseYAML(bytes)
if err != nil {
return nil, err
}
return loader.Load(buildConfigDetails(dict))
}
func getYamlFilePath(cmd *cobra.Command) *types.Config {
ymlFile := cmd.Flag("compose-file").Value.String()
confObj, err := load(ymlFile)
if err != nil {
log.Fatal("Err load File: ", err)
}
return confObj
}
func composeCreate(cmd *cobra.Command, args []string) {
confObj := getYamlFilePath(cmd)
log.Println("TODO: Kill Me", confObj)
// TODO
/*
for _, srv := range confObj.Services {
log.Println("Name", srv.Name)
log.Println("Volumes", srv.Volumes)
log.Println("DomainName", srv.DomainName)
log.Println("Image", srv.Image)
log.Println("Labels", srv.Labels)
//log.Println("Deploy", srv.Deploy)
log.Println("DependsOn", srv.DependsOn)
//log.Println("Ports", srv.Ports)
log.Println("Environment", srv.Environment)
log.Println("Links", srv.Links)
}
log.Println("-----------------------------------------------")
for key, vol := range confObj.Volumes {
log.Println("key", key)
_, err := VolumeCreate(key, "persistant-2Gi")
log.Println("Err", err)
//log.Println("Driver", vol.Driver)
log.Println("DriverOpts", vol.DriverOpts)
//log.Println("Labels", vol.Labels)
//log.Println("External", vol.External)
}
*/
}
func composeStart(cmd *cobra.Command, args []string) {
confObj := getYamlFilePath(cmd)
log.Println("TODO: Kill Me", confObj)
// TODO
}
func composeStop(cmd *cobra.Command, args []string) {
confObj := getYamlFilePath(cmd)
log.Println("TODO: Kill Me", confObj)
// TODO
}