--- a/config/config.go Mon Feb 19 00:43:38 2018 -0600
+++ b/config/config.go Mon Feb 19 01:28:01 2018 -0600
@@ -33,6 +33,7 @@
+// Valid returns an error if the command is valid or not. func (c *Config) Valid() error {
for name, task := range c.Tasks {
if err := task.Valid(); err != nil {
--- a/docker/export.go Mon Feb 19 00:43:38 2018 -0600
+++ b/docker/export.go Mon Feb 19 01:28:01 2018 -0600
@@ -48,7 +48,7 @@
func (e *Export) file(name, workSpace, src, dest string, st *state.State) error {
dir := filepath.Dir(dest)
- if err := os.MkdirAll(dir, 0777); err != nil {
+ if err := os.MkdirAll(dir, 0700); err != nil { @@ -90,7 +90,10 @@
- e.file(name, workSpace, match, tasks.DestFromSrc(match), st)
+ err = e.file(name, workSpace, match, tasks.DestFromSrc(match), st) --- a/docker/healthcheck.go Mon Feb 19 00:43:38 2018 -0600
+++ b/docker/healthcheck.go Mon Feb 19 01:28:01 2018 -0600
@@ -17,6 +17,7 @@
@@ -44,7 +45,9 @@
stdout, stderr, err := DockerOutput(name+"/healthcheck", cmdv, st)
+ if nErr := logger.Error(stderr); nErr != nil { + fmt.Printf("error reporting error: %s\n", nErr) @@ -66,7 +69,9 @@
stdout, stderr, err := DockerOutput(name+"/healthcheck", cmdv, st)
+ if nErr := logger.Error(stderr); nErr != nil { + fmt.Printf("error reporting error: %s\n", nErr) --- a/docker/import.go Mon Feb 19 00:43:38 2018 -0600
+++ b/docker/import.go Mon Feb 19 01:28:01 2018 -0600
@@ -41,8 +41,8 @@
- for _, file := range files {
- file, err := environment.Mapper(file, fullEnv)
+ for _, fileEntry := range files { + file, err := environment.Mapper(fileEntry, fullEnv) --- a/docker/network.go Mon Feb 19 00:43:38 2018 -0600
+++ b/docker/network.go Mon Feb 19 01:28:01 2018 -0600
@@ -17,6 +17,7 @@
"github.com/aphistic/gomol"
@@ -49,7 +50,10 @@
- network.logger.Debugf("created network: %#v", network.name)
+ err = network.logger.Debugf("created network: %#v", network.name) + fmt.Printf("error reporting debug: %s\n", err) @@ -70,15 +74,25 @@
- network.logger.Infof("disconnecting container %s from network %s", name, network.Name())
- err := Docker("disconnect container", cmdv, network.state)
+ err := network.logger.Infof("disconnecting container %s from network %s", name, network.Name()) + err = Docker("disconnect container", cmdv, network.state) - network.logger.Warningf("failed to disconnect container %s from network %s", name, network.Name())
+ msgFmt := "failed to disconnect container %s from network %s" + if lErr := network.logger.Warningf(msgFmt, name, network.Name()); lErr != nil { + fmt.Printf("error reporting warning: %s\n", lErr) - network.logger.Infof("disconnected container %s from network %s", name, network.Name())
+ msgFmt := "disconnected container %s from network %s" + if lErr := network.logger.Infof(msgFmt, name, network.Name()); lErr != nil { + fmt.Printf("error report info: %s\n", lErr) // monkey with the timeout so our cleanup always runs
--- a/docker/run.go Mon Feb 19 00:43:38 2018 -0600
+++ b/docker/run.go Mon Feb 19 01:28:01 2018 -0600
@@ -91,7 +91,10 @@
// bash if you need that kind of control.
scripts, err := environment.SliceMapper(r.Script, fullEnv)
+ if nErr := os.Remove(scriptFile); nErr != nil { + fmt.Printf("error removing file: %s\n", nErr) @@ -99,11 +102,10 @@
// write the script to the file
- []byte(strings.Join(scripts, "\n")),
+ err = ioutil.WriteFile(scriptFile, []byte(strings.Join(scripts, "\n")), 0700) return scriptFile, entryPoint, commandArg, nil
@@ -113,7 +115,9 @@
func (r *Run) detach(name string, cmdv []string, st *state.State, logger *gomol.LogAdapter) error {
stdout, stderr, err := DockerOutput(name, cmdv, st)
- logger.Errorf("%s", stderr)
+ if nErr := logger.Errorf("%s", stderr); nErr != nil { + fmt.Printf("error reporting error: %s\n", nErr) @@ -121,19 +125,29 @@
cid := strings.TrimSpace(stdout)
st.Cleanup(func(logger *gomol.LogAdapter) {
- logger.Debugf("stopping container %s", cid)
+ if nErr := logger.Debugf("stopping container %s", cid); nErr != nil { + fmt.Printf("error reporting debug: %s\n", nErr) - err := StopContainer(cid, logger, st)
+ err = StopContainer(cid, logger, st) - logger.Warnf("failed to stop container %s: %s", cid, err.Error())
+ if nErr := logger.Warnf("failed to stop container %s: %s", cid, err.Error()); nErr != nil { + fmt.Printf("error reporting warning: %s\n", nErr) - logger.Infof("stopped container %s", cid)
+ if nErr := logger.Infof("stopped container %s", cid); nErr != nil { + fmt.Printf("error reporting info: %s\n", nErr) - logger.Infof("started detached container %s", cid)
+ if nErr := logger.Infof("started detached container %s", cid); nErr != nil { + fmt.Printf("error reporting info: %s\n", nErr) - logger.Infof("checking for healthcheck")
+ if nErr := logger.Infof("checking for healthcheck"); nErr != nil { + fmt.Printf("error reporting info: %s\n", nErr) // check if the container has a health check
hasHealth, err := containerHasHealthCheck(name, cid, st, logger)
@@ -144,7 +158,9 @@
healthChan := make(chan error)
- logger.Infof("waiting for container to go healthy")
+ if nErr := logger.Infof("waiting for container to go healthy"); nErr != nil { + fmt.Printf("error reporting info: %s\n", nErr) duration := 5 * time.Second
@@ -160,7 +176,9 @@
- logger.Infof("container still not healthy, waiting %v", duration)
+ if nErr := logger.Infof("container still not healthy, waiting %v", duration); nErr != nil { + fmt.Printf("error reporting info: %s\n", nErr) @@ -171,9 +189,13 @@
- logger.Infof("container is ready")
+ if lErr := logger.Infof("container is ready"); lErr != nil { + fmt.Printf("error reporting info: %s\n", lErr) - logger.Infof("no healthcheck found")
+ if lErr := logger.Infof("no healthcheck found"); lErr != nil { + fmt.Printf("error reporting info: %s\n", lErr) @@ -212,8 +234,8 @@
fullEnv = environment.Merge(fullEnv, st.GetEnv())
// expand the environment
- for idx, v := range fullEnv {
- v, err := environment.Mapper(v, fullEnv)
+ for idx, item := range fullEnv { + v, err := environment.Mapper(item, fullEnv) @@ -283,8 +305,8 @@
cmd.Append("-w", workdir)
- id, err := ImageID(image, logger, st)
+ id, nErr := ImageID(image, logger, st) @@ -297,11 +319,13 @@
"{{.Config.WorkingDir}}",
- stdout, stderr, err := DockerOutput("checkWorkDir", cmdv, st)
- logger.Errorf("%s", stderr)
+ stdout, stderr, nErr := DockerOutput("checkWorkDir", cmdv, st) + if lErr := logger.Errorf("%s", stderr); lErr != nil { + fmt.Printf("error reporting error: %s\n", lErr)
if strings.TrimSpace(stdout) == "" {
@@ -342,7 +366,7 @@
// initialize some variables
entryPoint := r.EntryPoint
commandArg, err := environment.Mapper(r.Command, fullEnv)
@@ -407,7 +431,9 @@
- logger.Infof("running container with id %s", runID)
+ if lErr := logger.Infof("running container with id %s", runID); lErr != nil { + fmt.Printf("error reporting info: %s\n", lErr) // Everything after this should be mostly dead code
--- a/docker/util.go Mon Feb 19 00:43:38 2018 -0600
+++ b/docker/util.go Mon Feb 19 01:28:01 2018 -0600
@@ -17,6 +17,7 @@
"github.com/aphistic/gomol"
@@ -27,7 +28,6 @@
// ParseImage will convert an image like python:3 to it's registry, name, and tag
func ParseImage(image string) (string, string, string) {
// split the image into two pieces on the first /
@@ -41,7 +41,7 @@
parts = strings.SplitN(image, ":", 2)
@@ -59,7 +59,9 @@
- logger.Warnf("%s", strings.TrimSpace(stderr))
+ if lErr := logger.Warnf("%s", strings.TrimSpace(stderr)); lErr != nil { + fmt.Printf("error reporting warning: %s\n", lErr) @@ -71,7 +73,9 @@
stdout, stderr, err := DockerOutput("get image id", cmdv, st)
- logger.Errorf("error: %s", stderr)
+ if lErr := logger.Errorf("error: %s", stderr); lErr != nil { + fmt.Printf("error reporting error: %s\n", lErr) --- a/docker/workspace.go Mon Feb 19 00:43:38 2018 -0600
+++ b/docker/workspace.go Mon Feb 19 01:28:01 2018 -0600
@@ -17,6 +17,7 @@
@@ -47,7 +48,9 @@
stdout, stderr, err := DockerOutput("findMountPoint", cmdv, st)
- ws.logger.Errorf("%s", stderr)
+ if lErr := ws.logger.Errorf("%s", stderr); lErr != nil { + fmt.Printf("error reporting error: %s\n", lErr) @@ -83,7 +86,9 @@
- ws.logger.Debugf("created workspace: %#v", ws)
+ if lErr := ws.logger.Debugf("created workspace: %#v", ws); lErr != nil { + fmt.Printf("error reporting debug: %s\n", lErr) --- a/environment/environment.go Mon Feb 19 00:43:38 2018 -0600
+++ b/environment/environment.go Mon Feb 19 01:28:01 2018 -0600
@@ -18,6 +18,7 @@
@@ -28,9 +29,15 @@
"bitbucket.org/rw_grim/convey/normalize"
+func setEnv(name, value string) { + if err := os.Setenv(name, value); err != nil { + fmt.Printf("error setting environment variable '%s': %s\n", name, err) // addEnv set the environment variable name to value and returns the name
func addEnv(name, value string) string {
@@ -78,10 +85,10 @@
// any is in use, and set variables for it as well.
func Initialize(wd string) ([]string, error) {
oldHome := os.Getenv("HOME")
- os.Setenv("HOME", "/tmp")
- defer os.Setenv("HOME", oldHome)
+ defer setEnv("HOME", oldHome) - os.Setenv("RUN_TIME", time.Now().UTC().Format("2006-01-02T15:04:05-0700"))
+ setEnv("RUN_TIME", time.Now().UTC().Format("2006-01-02T15:04:05-0700")) env := []string{"RUN_TIME"}