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

View File

@@ -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)