diff --git a/pkg/io/files/file_exists_checker.go b/pkg/io/files/file_exists_checker.go index 4f7a131..97777f6 100644 --- a/pkg/io/files/file_exists_checker.go +++ b/pkg/io/files/file_exists_checker.go @@ -17,15 +17,26 @@ func IsFileExists(fileLocation string) bool { func GetFirstIndexedNonExistingFilePath(parentDir string, fileBaseName string) string { filePath := filepath.Join(parentDir, fileBaseName) - index := 0 + + if !IsFileExists(filePath) { + return filePath + } + + fileIndex := 0 + fileBaseNameWithoutExtension := GetSimpleNameWithoutExtension(fileBaseName) + fileExtension := GetExtension(fileBaseName) + if fileExtension != "" { + fileExtension = "." + fileExtension + } + for { if !IsFileExists(filePath) { break } - index++ + fileIndex++ - filePath = filepath.Join(parentDir, fmt.Sprintf("%s-%d", fileBaseName, index)) + filePath = filepath.Join(parentDir, fmt.Sprintf("%s-%d%s", fileBaseNameWithoutExtension, fileIndex, fileExtension)) } return filePath diff --git a/pkg/io/files/file_name_utils.go b/pkg/io/files/file_name_utils.go index 35bd3df..b882854 100644 --- a/pkg/io/files/file_name_utils.go +++ b/pkg/io/files/file_name_utils.go @@ -26,6 +26,10 @@ func GetSimpleName(filePath string) string { func GetExtension(filePath string) string { split := strings.Split(filePath, ".") + if len(split) == 1 { + return "" + } + return split[len(split)-1] }