This repository has been archived on 2026-07-15. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
drive/backend/handlers/utils.go
Elijah ffea6afeb0
All checks were successful
Automated Container Build / build-and-push (push) Successful in 59s
Fix file move duplicate incrementing and same folder move bugs, fix tooltip wrap and add hover delay
2026-05-23 08:19:42 -07:00

33 lines
837 B
Go

package handlers
import (
"fmt"
"os"
"path/filepath"
"regexp"
)
var numberSuffixRegex = regexp.MustCompile(` \(\d+\)$`)
// GetUniquePath checks if a file or folder exists at the given baseDir with the given name.
// If it does, it systematically appends " (1)", " (2)", etc., until it finds an available name.
// It returns the unique filename.
func GetUniquePath(baseDir, name string) string {
ext := filepath.Ext(name)
base := name[:len(name)-len(ext)]
finalPath := filepath.Join(baseDir, name)
if _, err := os.Stat(finalPath); os.IsNotExist(err) {
return name
}
base = numberSuffixRegex.ReplaceAllString(base, "")
for i := 1; ; i++ {
newName := fmt.Sprintf("%s (%d)%s", base, i, ext)
finalPath = filepath.Join(baseDir, newName)
if _, err := os.Stat(finalPath); os.IsNotExist(err) {
return newName
}
}
}