Add types.exclude pattern

This commit is contained in:
Pim van Pelt
2025-07-07 00:39:56 +02:00
parent 88e30a40b1
commit c8df809c29
5 changed files with 94 additions and 22 deletions

View File

@ -8,6 +8,7 @@ import (
"net"
"os"
"path/filepath"
"regexp"
"strconv"
"strings"
"time"
@ -202,8 +203,33 @@ func (rb *RouterBackup) RunCommand(command string) (string, error) {
return string(output), nil
}
// filterOutput removes lines matching exclude patterns from the output
func filterOutput(output string, excludePatterns []string) string {
if len(excludePatterns) == 0 {
return output
}
lines := strings.Split(output, "\n")
var filteredLines []string
for _, line := range lines {
exclude := false
for _, pattern := range excludePatterns {
if matched, _ := regexp.MatchString(pattern, line); matched {
exclude = true
break
}
}
if !exclude {
filteredLines = append(filteredLines, line)
}
}
return strings.Join(filteredLines, "\n")
}
// BackupCommands runs multiple commands and saves outputs to files
func (rb *RouterBackup) BackupCommands(commands []string, outputDir string) error {
func (rb *RouterBackup) BackupCommands(commands []string, excludePatterns []string, outputDir string) error {
if err := os.MkdirAll(outputDir, 0755); err != nil {
return fmt.Errorf("failed to create directory %s: %v", outputDir, err)
}
@ -241,7 +267,8 @@ func (rb *RouterBackup) BackupCommands(commands []string, outputDir string) erro
}
fmt.Fprintf(file, "## COMMAND: %s\n", command)
file.WriteString(output)
filteredOutput := filterOutput(output, excludePatterns)
file.WriteString(filteredOutput)
file.Close()
successCount++