grim/convey

Parents 82fa825579d5
Children fc5b4007a8d7
Check that we have an image before trying to inspect it. Fixes #173
  • +20 -13
    docker/run.go
  • +14 -0
    docker/util.go
  • --- a/docker/run.go Sat Feb 17 00:14:44 2018 -0600
    +++ b/docker/run.go Sat Feb 17 01:04:05 2018 -0600
    @@ -283,23 +283,30 @@
    if workdir != "" {
    cmd.Append("-w", workdir)
    } else {
    - // Check if the image does _not_ have a workdir set. If it doesn't,
    - // set workdir to the convey workspace
    - cmdv := []string{
    - "inspect",
    - "--format",
    - "{{.Config.WorkingDir}}",
    - image,
    - }
    - stdout, stderr, err := DockerOutput("checkWorkDir", cmdv, st)
    + id, err := ImageID(image, logger, st)
    if err != nil {
    - logger.Errorf("%s", stderr)
    -
    return err
    }
    - if strings.TrimSpace(stdout) == "" {
    - cmd.Append("-w", workspaceMount)
    + if id != "" {
    + // Check if the image does _not_ have a workdir set. If it doesn't,
    + // set workdir to the convey workspace
    + cmdv := []string{
    + "inspect",
    + "--format",
    + "{{.Config.WorkingDir}}",
    + image,
    + }
    + stdout, stderr, err := DockerOutput("checkWorkDir", cmdv, st)
    + if err != nil {
    + logger.Errorf("%s", stderr)
    +
    + return err
    + }
    +
    + if strings.TrimSpace(stdout) == "" {
    + cmd.Append("-w", workspaceMount)
    + }
    }
    }
    --- a/docker/util.go Sat Feb 17 00:14:44 2018 -0600
    +++ b/docker/util.go Sat Feb 17 01:04:05 2018 -0600
    @@ -64,3 +64,17 @@
    return nil
    }
    +
    +// ImageID will return the ID of the given image if it's available locally
    +func ImageID(tag string, logger *gomol.LogAdapter, st *state.State) (string, error) {
    + cmdv := []string{"image", "ls", "-q", tag}
    +
    + stdout, stderr, err := DockerOutput("get image id", cmdv, st)
    + if err != nil {
    + logger.Errorf("error: %s", stderr)
    +
    + return "", err
    + }
    +
    + return strings.TrimSpace(stdout), nil
    +}