func TryClearRegexMatchingFilesExcept()

in pkg/utils/utils_linux.go [24:60]


func TryClearRegexMatchingFilesExcept(directory string, regexFileNamePattern string,
	exceptFileName string, deleteFiles bool) error {

	if regexFileNamePattern == "" {
		return errors.New("Empty regexFileNamePattern argument.")
	}

	// Check if the directory exists
	directoryFDRef, err := os.Open(directory)
	if err != nil {
		return err
	}

	regex, err := regexp.Compile(regexFileNamePattern)
	if err != nil {
		return err
	}

	dirEntries, err := directoryFDRef.ReadDir(0)
	if err == nil {
		for _, dirEntry := range dirEntries {
			fileName := dirEntry.Name()

			if fileName != exceptFileName && regex.MatchString(fileName) {
				fullFilePath := filepath.Join(directory, fileName)
				if deleteFiles {
					os.Remove(fullFilePath)
				} else {
					os.Truncate(fullFilePath, 0) // Calling create on existing file truncates file
				}
			}
		}
		return nil
	}

	return err
}