From f3ebff6ce54a43d31b3c89681b826a17226ce719 Mon Sep 17 00:00:00 2001 From: oliverpool <3864879+oliverpool@users.noreply.github.com> Date: Mon, 22 Sep 2025 09:33:32 +0200 Subject: [PATCH] refactor: use sync.OnceValue --- common/embed/fs.go | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/common/embed/fs.go b/common/embed/fs.go index d6f85fdd..5caa9f20 100644 --- a/common/embed/fs.go +++ b/common/embed/fs.go @@ -14,28 +14,18 @@ import ( "sync" ) -var ( - //go:embed data/embed.zip - embeddedZip []byte - data fs.FS - dataOnce sync.Once - dataReady chan struct{} -) +//go:embed data/embed.zip +var embeddedZip []byte + +var dataOnce = sync.OnceValue(func() *zip.Reader { + r, err := zip.NewReader(bytes.NewReader(embeddedZip), int64(len(embeddedZip))) + if err != nil { + panic(fmt.Sprintf("cannot read embedded archive: %s", err)) + } + return r +}) // Data returns a filesystem with the files contained in the embedded archive. func Data() fs.FS { - dataOnce.Do(func() { - r, err := zip.NewReader(bytes.NewReader(embeddedZip), int64(len(embeddedZip))) - if err != nil { - panic(fmt.Sprintf("cannot read embedded archive: %s", err)) - } - data = r - close(dataReady) - }) - <-dataReady - return data -} - -func init() { - dataReady = make(chan struct{}) + return dataOnce() }