summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2021-10-02 00:18:50 +0700
committerShulhan <ms@kilabit.info>2021-10-02 00:18:50 +0700
commit8be5543e70932d4af49c784c08cfa11809c705a9 (patch)
treee0fbe2136ecdf63b9ad4556424feab640cabb0de
parentc94d6ba835c7c46890c5d14e4e089fa6ddabc900 (diff)
downloadpakakeh.go-8be5543e70932d4af49c784c08cfa11809c705a9.tar.xz
lib/memfs: check error on File Close on GoGenerate
Previously, we ignore the error for call to Close when there is an error in previous operation. This changes check the error returned from Close and add it to the returned error message. While at it, use consisten prefix for all returned error: "MemFS.GoGenerate".
-rw-r--r--lib/memfs/generate.go23
1 files changed, 14 insertions, 9 deletions
diff --git a/lib/memfs/generate.go b/lib/memfs/generate.go
index ff3c088a..cb141086 100644
--- a/lib/memfs/generate.go
+++ b/lib/memfs/generate.go
@@ -42,6 +42,8 @@ type generateData struct {
// file using gzip and set Node.ContentEncoding to "gzip".
//
func (mfs *MemFS) GoGenerate(pkgName, varName, out, contentEncoding string) (err error) {
+ logp := "MemFS.GoGenerate"
+
if len(pkgName) == 0 {
pkgName = DefaultGenPackageName
}
@@ -59,18 +61,18 @@ func (mfs *MemFS) GoGenerate(pkgName, varName, out, contentEncoding string) (err
tmpl, err := generateTemplate()
if err != nil {
- return err
+ return fmt.Errorf("%s: %w", logp, err)
}
f, err := os.Create(out)
if err != nil {
- return fmt.Errorf("memfs: GoGenerate: %w", err)
+ return fmt.Errorf("%s: %w", logp, err)
}
if len(contentEncoding) > 0 {
err = mfs.ContentEncode(contentEncoding)
if err != nil {
- return fmt.Errorf("GoGenerate: %w", err)
+ return fmt.Errorf("%s: %w", logp, err)
}
}
@@ -107,13 +109,16 @@ func (mfs *MemFS) GoGenerate(pkgName, varName, out, contentEncoding string) (err
goto fail
}
- err = f.Close()
+fail:
+ errClose := f.Close()
+ if errClose != nil {
+ if err != nil {
+ return fmt.Errorf("%s: %s: %w", logp, errClose, err)
+ }
+ return fmt.Errorf("%s: %w", logp, errClose)
+ }
if err != nil {
- return fmt.Errorf("memfs: GoGenerate: %w", err)
+ return fmt.Errorf("%s: %w", logp, err)
}
-
return nil
-fail:
- _ = f.Close()
- return fmt.Errorf("memfs: GoGenerate: %w", err)
}