From 404f7eaac0d1f40402ad39e8deba06cc28599c85 Mon Sep 17 00:00:00 2001 From: Cole Lashley Date: Wed, 27 Mar 2024 14:55:03 -0700 Subject: [PATCH] Ensure config dir and keybindings.json file to remove 404 keybindings file not found console error (#513) * added ensure dir to config dir * removed extraneous slashes --- wavesrv/cmd/main-server.go | 5 +++++ wavesrv/pkg/scbase/scbase.go | 40 ++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/wavesrv/cmd/main-server.go b/wavesrv/cmd/main-server.go index e2271aa4..9aab0704 100644 --- a/wavesrv/cmd/main-server.go +++ b/wavesrv/cmd/main-server.go @@ -962,6 +962,11 @@ func main() { log.Printf("[error] %v\n", err) return } + _, err = scbase.EnsureConfigDir() + if err != nil { + log.Printf("[error] ensuring config directory: %v\n", err) + return + } err = sstore.TryMigrateUp() if err != nil { log.Printf("[error] migrate up: %v\n", err) diff --git a/wavesrv/pkg/scbase/scbase.go b/wavesrv/pkg/scbase/scbase.go index 6c69a7b8..99f99880 100644 --- a/wavesrv/pkg/scbase/scbase.go +++ b/wavesrv/pkg/scbase/scbase.go @@ -234,6 +234,46 @@ func GetScreensDir() string { return sdir } +func EnsureConfigDir() (string, error) { + scHome := GetWaveHomeDir() + configDir := path.Join(scHome, "config") + err := ensureDir(configDir) + if err != nil { + return "", err + } + keybindingsFile := path.Join(configDir, "keybindings.json") + keybindingsFileObj, err := ensureFile(keybindingsFile) + if err != nil { + return "", err + } + if keybindingsFileObj != nil { + keybindingsFileObj.WriteString("[]\n") + keybindingsFileObj.Close() + } + return configDir, nil +} + +func ensureFile(fileName string) (*os.File, error) { + info, err := os.Stat(fileName) + var myFile *os.File + if errors.Is(err, fs.ErrNotExist) { + myFile, err = os.Create(fileName) + if err != nil { + return nil, err + } + log.Printf("[wave] created file %q\n", fileName) + info, err = myFile.Stat() + } + if err != nil { + return myFile, err + } + if info.IsDir() { + return myFile, fmt.Errorf("'%s' must be a file", fileName) + } + return myFile, nil + +} + func ensureDir(dirName string) error { info, err := os.Stat(dirName) if errors.Is(err, fs.ErrNotExist) {