Skip to content

Commit 7e5d2fd

Browse files
committed
Refactored docker env fetching
1 parent 8f7aaf2 commit 7e5d2fd

File tree

3 files changed

+43
-32
lines changed

3 files changed

+43
-32
lines changed

command/Helper.go

+25
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ import (
77
"time"
88
"path/filepath"
99
"math/rand"
10+
"bufio"
11+
"strings"
12+
"github.com/webdevops/go-shell"
13+
"github.com/webdevops/go-shell/commandbuilder"
1014
)
1115

1216
func NewSigIntHandler(callback func()) func() {
@@ -56,6 +60,27 @@ func GetCompressionByFilename(file string) string {
5660
return compression
5761
}
5862

63+
func GetDockerEnvList(connection commandbuilder.Connection, containerId string) map[string]string {
64+
ret := map[string]string{}
65+
66+
cmd := shell.Cmd(connection.CommandBuilder("docker", "inspect", "-f", "{{range .Config.Env}}{{println .}}{{end}}", containerId)...)
67+
envList := cmd.Run().Stdout.String()
68+
69+
scanner := bufio.NewScanner(strings.NewReader(envList))
70+
for scanner.Scan() {
71+
line := scanner.Text()
72+
split := strings.SplitN(line, "=", 2)
73+
74+
if len(split) == 2 {
75+
varName, varValue := split[0], split[1]
76+
77+
ret[varName] = varValue
78+
}
79+
}
80+
81+
return ret
82+
}
83+
5984
const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
6085
func randomString(length int) string {
6186
rand.Seed(time.Now().UTC().UnixNano())

command/MysqlCommon.go

+7-16
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,6 @@ func (conf *MysqlCommonOptions) GetTableList(schema string) []string {
209209
return ret
210210
}
211211

212-
213-
214212
func (conf *MysqlCommonOptions) InitDockerSettings() {
215213
containerName := conf.connection.Docker
216214

@@ -221,21 +219,14 @@ func (conf *MysqlCommonOptions) InitDockerSettings() {
221219
containerId := connectionClone.DockerGetContainerId(containerName)
222220
fmt.Println(fmt.Sprintf(" - Using docker container \"%s\"", containerId))
223221

224-
cmd := shell.Cmd(connectionClone.CommandBuilder("docker", "inspect", "-f", "{{range .Config.Env}}{{println .}}{{end}}", containerId)...)
225-
envList := cmd.Run().Stdout.String()
222+
containerEnv := GetDockerEnvList(connectionClone, containerId)
226223

227-
scanner := bufio.NewScanner(strings.NewReader(envList))
228-
for scanner.Scan() {
229-
line := scanner.Text()
230-
split := strings.SplitN(line, "=", 2)
231-
if len(split) == 2 {
232-
varName, varValue := split[0], split[1]
233-
234-
if varName == "MYSQL_ROOT_PASSWORD" && conf.Username == "" && conf.Password == "" {
235-
conf.Username = "root"
236-
conf.Password = varValue
237-
conf.Hostname = ""
238-
}
224+
// get root pass from env
225+
if val, ok := containerEnv["MYSQL_ROOT_PASSWORD"]; ok {
226+
if conf.Username == "" && conf.Password == "" {
227+
conf.Username = "root"
228+
conf.Password = val
229+
conf.Hostname = ""
239230
}
240231
}
241232
}

command/PostgresCommon.go

+11-16
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package command
22

33
import (
4-
"bufio"
54
"strings"
65
"github.com/webdevops/go-shell"
76
"github.com/webdevops/go-shell/commandbuilder"
@@ -171,23 +170,19 @@ func (conf *PostgresCommonOptions) InitDockerSettings() {
171170
containerId := connectionClone.DockerGetContainerId(containerName)
172171
fmt.Println(fmt.Sprintf(" - Using docker container \"%s\"", containerId))
173172

174-
cmd := shell.Cmd(connectionClone.CommandBuilder("docker", "inspect", "-f", "{{range .Config.Env}}{{println .}}{{end}}", containerId)...)
175-
envList := cmd.Run().Stdout.String()
173+
containerEnv := GetDockerEnvList(connectionClone, containerId)
176174

177-
scanner := bufio.NewScanner(strings.NewReader(envList))
178-
for scanner.Scan() {
179-
line := scanner.Text()
180-
split := strings.SplitN(line, "=", 2)
181-
if len(split) == 2 {
182-
varName, varValue := split[0], split[1]
183-
184-
if varName == "POSTGRES_USER" && conf.Username == "" {
185-
conf.Username = varValue
186-
}
175+
// get user from env
176+
if val, ok := containerEnv["POSTGRES_USER"]; ok {
177+
if conf.Username == "" {
178+
conf.Username = val
179+
}
180+
}
187181

188-
if varName == "POSTGRES_PASSWORD" && conf.Password == "" {
189-
conf.Password = varValue
190-
}
182+
// get user from env
183+
if val, ok := containerEnv["POSTGRES_PASSWORD"]; ok {
184+
if conf.Username == "" {
185+
conf.Password = val
191186
}
192187
}
193188
}

0 commit comments

Comments
 (0)