diff --git a/core/gallery/gallery.go b/core/gallery/gallery.go index d102eac8..9288c44f 100644 --- a/core/gallery/gallery.go +++ b/core/gallery/gallery.go @@ -204,35 +204,34 @@ func DeleteModelFromSystem(basePath string, name string, additionalFiles []strin log.Error().Err(err).Msgf("failed to read gallery file %s", configFile) } + var filesToRemove []string + // Remove additional files if galleryconfig != nil { for _, f := range galleryconfig.Files { fullPath := filepath.Join(basePath, f.Filename) - log.Debug().Msgf("Removing file %s", fullPath) - if e := os.Remove(fullPath); e != nil { - err = errors.Join(err, fmt.Errorf("failed to remove file %s: %w", f.Filename, e)) - } + filesToRemove = append(filesToRemove, fullPath) } } for _, f := range additionalFiles { fullPath := filepath.Join(filepath.Join(basePath, f)) - log.Debug().Msgf("Removing additional file %s", fullPath) - if e := os.Remove(fullPath); e != nil { + filesToRemove = append(filesToRemove, fullPath) + } + + filesToRemove = append(filesToRemove, configFile) + filesToRemove = append(filesToRemove, galleryFile) + + // skip duplicates + filesToRemove = utils.Unique(filesToRemove) + + // Removing files + for _, f := range filesToRemove { + if e := os.Remove(f); e != nil { err = errors.Join(err, fmt.Errorf("failed to remove file %s: %w", f, e)) } } - log.Debug().Msgf("Removing model config file %s", configFile) - - // Delete the model config file - if e := os.Remove(configFile); e != nil { - err = errors.Join(err, fmt.Errorf("failed to remove file %s: %w", configFile, e)) - } - - // Delete gallery config file - os.Remove(galleryFile) - return err } diff --git a/pkg/utils/strings.go b/pkg/utils/strings.go index 2a782e03..4ac0458d 100644 --- a/pkg/utils/strings.go +++ b/pkg/utils/strings.go @@ -18,3 +18,15 @@ func RandString(n int) string { } return string(b) } + +func Unique(arr []string) []string { + unique := make(map[string]bool) + var result []string + for _, item := range arr { + if _, ok := unique[item]; !ok { + unique[item] = true + result = append(result, item) + } + } + return result +}