cmd/dist: close and remove tempfile after edit

Signed-off-by: Stephen J Day <stephen.day@docker.com>
This commit is contained in:
Stephen J Day 2017-05-08 11:48:07 -07:00
parent 3e485e4623
commit 941b0e47b0
No known key found for this signature in database
GPG Key ID: 67B3DED84EDC823F

26
cmd/dist/edit.go vendored
View File

@ -62,6 +62,7 @@ var editCommand = cli.Command{
if err != nil {
return err
}
defer nrc.Close()
wr, err := ingester.Writer(ctx, "edit-"+object, 0, "") // TODO(stevvooe): Choose a better key?
if err != nil {
@ -109,5 +110,28 @@ func edit(rd io.Reader) (io.ReadCloser, error) {
return nil, err
}
return tmp, nil
return onCloser{ReadCloser: tmp, onClose: func() error {
return os.RemoveAll(tmp.Name())
}}, nil
}
type onCloser struct {
io.ReadCloser
onClose func() error
}
func (oc onCloser) Close() error {
var err error
if err1 := oc.ReadCloser.Close(); err1 != nil {
err = err1
}
if oc.onClose != nil {
err1 := oc.onClose()
if err == nil {
err = err1
}
}
return err
}