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")) }