From fa5f303dadb03109d99f0518fa28f1ed899b0a5a Mon Sep 17 00:00:00 2001 From: Noah Petherbridge Date: Thu, 30 Dec 2021 18:39:11 -0800 Subject: [PATCH] Bugfix: embedded levelpacks from bindata --- pkg/levelpack/levelpack.go | 40 ++++++++++++++++++++++++++++------- pkg/windows/levelpack_open.go | 3 --- 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/pkg/levelpack/levelpack.go b/pkg/levelpack/levelpack.go index 30d723a..3e2a408 100644 --- a/pkg/levelpack/levelpack.go +++ b/pkg/levelpack/levelpack.go @@ -3,8 +3,11 @@ package levelpack import ( "archive/zip" + "bytes" "encoding/json" "errors" + "fmt" + "io" "io/ioutil" "os" "runtime" @@ -45,17 +48,37 @@ type Level struct { // LoadFile reads a .levelpack zip file. func LoadFile(filename string) (LevelPack, error) { - stat, err := os.Stat(filename) - if err != nil { - return LevelPack{}, err + var ( + fh io.ReaderAt + filesize int64 + ) + + // Look in embedded bindata. + if data, err := assets.Asset(filename); err == nil { + filesize = int64(len(data)) + fh = bytes.NewReader(data) } - fh, err := os.Open(filename) - if err != nil { - return LevelPack{}, err + // Try the filesystem. + if fh == nil { + stat, err := os.Stat(filename) + if err != nil { + return LevelPack{}, err + } + filesize = stat.Size() + + fh, err = os.Open(filename) + if err != nil { + return LevelPack{}, err + } } - reader, err := zip.NewReader(fh, stat.Size()) + // No luck? + if fh == nil { + return LevelPack{}, errors.New("no file found") + } + + reader, err := zip.NewReader(fh, filesize) if err != nil { return LevelPack{}, err } @@ -84,12 +107,13 @@ func LoadAllAvailable() ([]string, map[string]LevelPack, error) { // Resolve the filename to a definite path on disk. path, err := filesystem.FindFile(filename) if err != nil { + fmt.Errorf("LoadAllAvailable: FindFile(%s): %s", path, err) return filenames, nil, err } lp, err := LoadFile(path) if err != nil { - return filenames, nil, err + return filenames, nil, fmt.Errorf("LoadAllAvailable: LoadFile(%s): %s", path, err) } dictionary[filename] = lp diff --git a/pkg/windows/levelpack_open.go b/pkg/windows/levelpack_open.go index 3480646..298d00b 100644 --- a/pkg/windows/levelpack_open.go +++ b/pkg/windows/levelpack_open.go @@ -42,9 +42,6 @@ func NewLevelPackWindow(config LevelPack) *ui.Window { log.Error("Couldn't list levelpack files: %s", err) } - log.Error("lpFiles: %+v", lpFiles) - log.Error("packmap: %+v", packmap) - window := ui.NewWindow(title) window.SetButtons(ui.CloseButton) window.Configure(ui.Config{