Some checks failed
Automated Container Build / build-and-push (push) Failing after 8s
28 lines
716 B
Go
28 lines
716 B
Go
package handlers
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
)
|
|
|
|
// 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
|
|
}
|
|
|
|
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
|
|
}
|
|
}
|
|
}
|