From 7b6db3c5b40c79ac33bddc54871cdc560ceac754 Mon Sep 17 00:00:00 2001 From: Andreas Schulte <0x0001f346@pm.me> Date: Wed, 3 Sep 2025 21:55:51 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20handling=20of=20the=20=E2=80=98path?= =?UTF-8?q?=E2=80=99=20flag=20has=20been=20improved;=20directories=20are?= =?UTF-8?q?=20now=20created=20including=20all=20parent=20directories?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/flags.go | 13 ---------- filesystem/filesystem.go | 56 ++++++++++------------------------------ 2 files changed, 14 insertions(+), 55 deletions(-) diff --git a/config/flags.go b/config/flags.go index b93d98c..aff1b43 100644 --- a/config/flags.go +++ b/config/flags.go @@ -121,19 +121,6 @@ func parseFlagValuePathDataFolder() { return } - info, err := os.Stat(pathDataFolder) - if err != nil { - pathDataFolder = defaultPathDataFolder - pathUploadFolder = defaultPathUploadFolder - return - } - - if !info.IsDir() { - pathDataFolder = defaultPathDataFolder - pathUploadFolder = defaultPathUploadFolder - return - } - pathUploadFolder = filepath.Join(pathDataFolder, DefaultNameUploadFolder) } diff --git a/filesystem/filesystem.go b/filesystem/filesystem.go index 51838c6..9a97f1e 100644 --- a/filesystem/filesystem.go +++ b/filesystem/filesystem.go @@ -11,12 +11,17 @@ import ( ) func Init() error { - err := prepareDataFolder() + err := createWriteableFolder(config.GetPathDataFolder()) if err != nil { return err } - err = prepareUploadDir() + err = os.RemoveAll(config.GetPathUploadFolder()) + if err != nil { + return fmt.Errorf("Could not delete upload folder '%s': %v", config.GetPathUploadFolder(), err) + } + + err = createWriteableFolder(config.GetPathUploadFolder()) if err != nil { return err } @@ -77,52 +82,19 @@ func SanitizeFilename(dirtyFilename string) string { return cleanedFilename + extension } -func prepareDataFolder() error { - info, err := os.Stat(config.GetPathDataFolder()) +func createWriteableFolder(path string) error { + info, err := os.Stat(path) if os.IsNotExist(err) { - if err := os.Mkdir(config.GetPathDataFolder(), 0755); err != nil { - return fmt.Errorf("Could not create folder '%s': %v", config.GetPathDataFolder(), err) + if err := os.MkdirAll(path, 0755); err != nil { + return fmt.Errorf("Could not create folder '%s': %v", path, err) } } else if err != nil { - return fmt.Errorf("Could not access '%s': %v", config.GetPathDataFolder(), err) + return fmt.Errorf("Could not access '%s': %v", path, err) } else if !info.IsDir() { - return fmt.Errorf("'%s' exists but is not a directory", config.GetPathDataFolder()) + return fmt.Errorf("'%s' exists but is not a directory", path) } - pathTestFile := filepath.Join(config.GetPathDataFolder(), ".write_test") - err = os.WriteFile(pathTestFile, []byte("test"), 0644) - if err != nil { - return fmt.Errorf("Could not create test file '%s': %v", pathTestFile, err) - } - - err = os.Remove(pathTestFile) - if err != nil { - return fmt.Errorf("Could not delete test file '%s': %v", pathTestFile, err) - } - - return nil -} - -func prepareUploadDir() error { - info, err := os.Stat(config.GetPathUploadFolder()) - if err == nil { - if !info.IsDir() { - return fmt.Errorf("%s exists, but is not a folder", config.GetPathUploadFolder()) - } - - err = os.RemoveAll(config.GetPathUploadFolder()) - if err != nil { - return fmt.Errorf("Could not delete upload folder '%s': %v", config.GetPathUploadFolder(), err) - } - } else if !os.IsNotExist(err) { - return fmt.Errorf("'%s' exists but is somewhat broken", config.GetPathUploadFolder()) - } - - if err := os.MkdirAll(config.GetPathUploadFolder(), 0755); err != nil { - return fmt.Errorf("Could not create upload folder '%s': %v", config.GetPathUploadFolder(), err) - } - - pathTestFile := filepath.Join(config.GetPathUploadFolder(), ".write_test") + pathTestFile := filepath.Join(path, ".write_test") err = os.WriteFile(pathTestFile, []byte("test"), 0644) if err != nil { return fmt.Errorf("Could not create test file '%s': %v", pathTestFile, err)