From 7f376334235f1f15eaaf4dd62b05759d856734ae Mon Sep 17 00:00:00 2001 From: Harvey Tindall Date: Fri, 16 Jul 2021 15:39:22 +0100 Subject: [PATCH] fix external fs --- external.go | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/external.go b/external.go index a34d5d2..f769125 100644 --- a/external.go +++ b/external.go @@ -12,8 +12,8 @@ import ( const binaryType = "external" -var localFS fs.FS -var langFS fs.FS +var localFS dirFS +var langFS dirFS // When using os.DirFS, even on Windows the separator seems to be '/'. // func FSJoin(elem ...string) string { return filepath.Join(elem...) } @@ -29,9 +29,23 @@ func FSJoin(elem ...string) string { return strings.TrimSuffix(path, sep) } +type dirFS string + +func (dir dirFS) Open(name string) (fs.File, error) { + return os.Open(string(dir) + "/" + name) +} + +func (dir dirFS) ReadFile(name string) ([]byte, error) { + return os.ReadFile(string(dir) + "/" + name) +} + +func (dir dirFS) ReadDir(name string) ([]fs.DirEntry, error) { + return os.ReadDir(string(dir) + "/" + name) +} + func loadFilesystems() { log.Println("Using external storage") executable, _ := os.Executable() - localFS = os.DirFS(filepath.Join(filepath.Dir(executable), "data")) - langFS = os.DirFS(filepath.Join(filepath.Dir(executable), "data", "lang")) + localFS = dirFS(filepath.Join(filepath.Dir(executable), "data")) + langFS = dirFS(filepath.Join(filepath.Dir(executable), "data", "lang")) }