From bbe979b97b98b758e98b8a868836fb8c2dce05c7 Mon Sep 17 00:00:00 2001 From: amorozov Date: Tue, 25 Jun 2024 15:52:10 +0300 Subject: [PATCH] feature: updated GetFirstIndexedNonExistingFilePath logic --- pkg/io/files/file_exists_checker.go | 17 ++++++++++++++--- pkg/io/files/file_name_utils.go | 4 ++++ 2 files changed, 18 insertions(+), 3 deletions(-) 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] }