Skip to content

Commit 0b54130

Browse files
committed
changes service struct to only “store” properties existing on docker-compose.yml file
1 parent e06a9e9 commit 0b54130

File tree

1 file changed

+37
-21
lines changed

1 file changed

+37
-21
lines changed

main.go

Lines changed: 37 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,24 +21,31 @@ var (
2121
)
2222

2323
const bashTemplate = `#!/bin/bash
24-
/usr/bin/docker {{.DockerHostConnCmdArg}} pull {{.Image}}
24+
/usr/bin/docker {{.DockerHostConnCmdArg}} pull {{.Service.Image}}
2525
26-
if /usr/bin/docker {{.DockerHostConnCmdArg}} ps | grep --quiet {{.Name}}_1 ; then
27-
/usr/bin/docker {{.DockerHostConnCmdArg}} rm -f {{.Name}}_1
26+
if /usr/bin/docker {{.DockerHostConnCmdArg}} ps | grep --quiet {{.Service.Name}}_1 ; then
27+
/usr/bin/docker {{.DockerHostConnCmdArg}} rm -f {{.Service.Name}}_1
2828
fi
2929
3030
/usr/bin/docker {{.DockerHostConnCmdArg}} run \
31-
{{if .Privileged}}--privileged=true {{end}} \
32-
--restart=always \
33-
-d \
34-
--name {{.Name}}_1 \
35-
{{range .Volumes}}-v {{.}} {{end}} \
36-
{{range .Links}}--link {{.}} {{end}} \
37-
{{range $key, $value := .Environment}}-e {{$key}}="{{$value}}" {{end}} \
38-
{{range .Ports}}-p {{.}} {{end}} \
39-
{{.Image}} {{.Command}}
31+
{{if .Service.Privileged}}--privileged=true {{end}} \
32+
--restart=always \
33+
-d \
34+
--name {{.Service.Name}}_1 \
35+
{{range .Service.Volumes}}-v {{.}} {{end}} \
36+
{{range .Service.Links}}--link {{.}} {{end}} \
37+
{{range $key, $value := .Service.Environment}}-e {{$key}}="{{$value}}" {{end}} \
38+
{{range .Service.Ports}}-p {{.}} {{end}} \
39+
{{.Service.Image}} {{.Service.Command}}
4040
`
4141

42+
// ScriptDataTemplate contains the whole data configuration used to fill the script
43+
type ScriptDataTemplate struct {
44+
AppName string
45+
DockerHostConnCmdArg string
46+
Service Service
47+
}
48+
4249
// Service has the same structure used by docker-compose.yml
4350
type Service struct {
4451
Name string
@@ -49,8 +56,6 @@ type Service struct {
4956
Privileged bool
5057
Command string
5158
Environment map[string]string
52-
// helper variables
53-
DockerHostConnCmdArg string
5459
}
5560

5661
// Parses the original Yaml to the Service struct
@@ -75,6 +80,21 @@ func setLinksWithAppName(service *Service) {
7580
}
7681
}
7782

83+
func buildScriptDataTemplate(serviceName string, service Service) ScriptDataTemplate {
84+
// common data template for all services from the same app
85+
data := ScriptDataTemplate{AppName: appName}
86+
if dockerHostConn != "" {
87+
data.DockerHostConnCmdArg = "--host=" + dockerHostConn
88+
}
89+
90+
// specific data for each service
91+
service.Name = appName + "-" + serviceName
92+
setLinksWithAppName(&service)
93+
data.Service = service
94+
95+
return data
96+
}
97+
7898
// Saves the services data into bash scripts
7999
func saveToBash(services map[string]Service) (err error) {
80100
t := template.New("service-bash-template")
@@ -84,15 +104,11 @@ func saveToBash(services map[string]Service) (err error) {
84104
}
85105

86106
for name, service := range services {
87-
service.Name = appName + "-" + name
88-
if dockerHostConn != "" {
89-
service.DockerHostConnCmdArg = "--host=" + dockerHostConn
90-
}
107+
data := buildScriptDataTemplate(name, service)
91108

92-
f, _ := os.Create(path.Join(outputPath, service.Name+".1.sh"))
109+
f, _ := os.Create(path.Join(outputPath, data.Service.Name+".1.sh"))
93110
defer f.Close()
94-
95-
t.Execute(f, service)
111+
t.Execute(f, data)
96112
}
97113

98114
return nil

0 commit comments

Comments
 (0)