package utils
import (
"os"
"path"
"path/filepath"
"regexp"
"strings"
"github.com/navidrome/navidrome/model/id"
)
var cleanFileNameRe = regexp.MustCompile(`[^a-z0-9_-]`)
func TempFileName(prefix, suffix string) string {
return filepath.Join(os.TempDir(), prefix+id.NewRandom()+suffix)
}
func BaseName(filePath string) string {
p := path.Base(filePath)
return strings.TrimSuffix(p, path.Ext(p))
}
func CleanFileName(name string) string {
s := strings.ToLower(strings.TrimSpace(name))
s = strings.ReplaceAll(s, " ", "_")
s = cleanFileNameRe.ReplaceAllString(s, "")
if len(s) > 50 {
s = s[:50]
}
s = strings.TrimRight(s, "_-")
return s
}
func FileExists(path string) bool {
_, err := os.Stat(path)
return err == nil || !os.IsNotExist(err)
}