summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Goodman <wagoodman@gmail.com>2018-11-24 21:02:58 -0500
committerAlex Goodman <wagoodman@gmail.com>2018-11-24 21:02:58 -0500
commitb1962b9ae549c20ba0f7cd0d37db3587ff174bac (patch)
treea492686aacdb808de81c6ec669f9e8d336451c69
parent7d868096ca394a6fa437087dee7db8a0eadcae23 (diff)
ensure tmp image is cleaned up on crash (addresses part of #58)v0.3.0
-rw-r--r--image/image.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/image/image.go b/image/image.go
index 38497ce..3c8baaf 100644
--- a/image/image.go
+++ b/image/image.go
@@ -361,12 +361,17 @@ func saveImage(imageID string) (string, string) {
tmpDir, err := ioutil.TempDir("", "dive")
check(err)
+ cleanUpTmp := func() {
+ os.RemoveAll(tmpDir)
+ }
+
imageTarPath := filepath.Join(tmpDir, "image.tar")
imageFile, err := os.Create(imageTarPath)
check(err)
defer func() {
if err := imageFile.Close(); err != nil {
+ cleanUpTmp()
logrus.Panic(err)
}
}()
@@ -379,6 +384,7 @@ func saveImage(imageID string) (string, string) {
for {
n, err := readCloser.Read(buf)
if err != nil && err != io.EOF {
+ cleanUpTmp()
logrus.Panic(err)
}
if n == 0 {
@@ -392,11 +398,13 @@ func saveImage(imageID string) (string, string) {
}
if _, err := imageWriter.Write(buf[:n]); err != nil {
+ cleanUpTmp()
logrus.Panic(err)
}
}
if err = imageWriter.Flush(); err != nil {
+ cleanUpTmp()
logrus.Panic(err)
}