fix: handling of the ‘path’ flag has been improved; directories are now created including all parent directories

This commit is contained in:
2025-09-03 21:55:51 +02:00
parent 5c0800b5ce
commit 7b6db3c5b4
2 changed files with 14 additions and 55 deletions

View File

@@ -121,19 +121,6 @@ func parseFlagValuePathDataFolder() {
return 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) pathUploadFolder = filepath.Join(pathDataFolder, DefaultNameUploadFolder)
} }

View File

@@ -11,12 +11,17 @@ import (
) )
func Init() error { func Init() error {
err := prepareDataFolder() err := createWriteableFolder(config.GetPathDataFolder())
if err != nil { if err != nil {
return err 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 { if err != nil {
return err return err
} }
@@ -77,52 +82,19 @@ func SanitizeFilename(dirtyFilename string) string {
return cleanedFilename + extension return cleanedFilename + extension
} }
func prepareDataFolder() error { func createWriteableFolder(path string) error {
info, err := os.Stat(config.GetPathDataFolder()) info, err := os.Stat(path)
if os.IsNotExist(err) { if os.IsNotExist(err) {
if err := os.Mkdir(config.GetPathDataFolder(), 0755); err != nil { if err := os.MkdirAll(path, 0755); err != nil {
return fmt.Errorf("Could not create folder '%s': %v", config.GetPathDataFolder(), err) return fmt.Errorf("Could not create folder '%s': %v", path, err)
} }
} else if err != nil { } 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() { } 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") 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)
}
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")
err = os.WriteFile(pathTestFile, []byte("test"), 0644) err = os.WriteFile(pathTestFile, []byte("test"), 0644)
if err != nil { if err != nil {
return fmt.Errorf("Could not create test file '%s': %v", pathTestFile, err) return fmt.Errorf("Could not create test file '%s': %v", pathTestFile, err)