From 941b0e47b08d4abec03b41b1c46aceec3552abe3 Mon Sep 17 00:00:00 2001 From: Stephen J Day Date: Mon, 8 May 2017 11:48:07 -0700 Subject: [PATCH] cmd/dist: close and remove tempfile after edit Signed-off-by: Stephen J Day --- cmd/dist/edit.go | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/cmd/dist/edit.go b/cmd/dist/edit.go index c7f655e20..904bb7928 100644 --- a/cmd/dist/edit.go +++ b/cmd/dist/edit.go @@ -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 }