Fix the retarded fucking diffing
This commit is contained in:
@@ -140,7 +140,7 @@ func syncConfigs(config *Config) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to get current directory: %w", err)
|
return fmt.Errorf("failed to get current directory: %w", err)
|
||||||
}
|
}
|
||||||
logger := cylogger.Default.WithPrefix(fmt.Sprintf("dir=%s", currentDir))
|
logger := cylogger.Default
|
||||||
|
|
||||||
// Get existing .caddy files
|
// Get existing .caddy files
|
||||||
logger.Debug("Scanning for existing .caddy files")
|
logger.Debug("Scanning for existing .caddy files")
|
||||||
@@ -180,7 +180,7 @@ func syncConfigs(config *Config) error {
|
|||||||
return fmt.Errorf("failed to create file %s: %w", caddyFilename, err)
|
return fmt.Errorf("failed to create file %s: %w", caddyFilename, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if normalizeContent(existingContent) != normalizeContent(expectedContent) {
|
} else if !contentMatches(existingContent, expectedContent) {
|
||||||
// File exists but content differs
|
// File exists but content differs
|
||||||
fileLogger.Info("File content differs, updating")
|
fileLogger.Info("File content differs, updating")
|
||||||
updated++
|
updated++
|
||||||
@@ -335,14 +335,37 @@ func generateAndLogDiff(logger *cylogger.Logger, filename, existingContent, expe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func normalizeContent(content string) string {
|
func contentMatches(existing, expected string) bool {
|
||||||
// Normalize content for comparison by trimming whitespace and standardizing line endings
|
dmp := diffmatchpatch.New()
|
||||||
lines := strings.Split(content, "\n")
|
diffs := dmp.DiffMain(normalize(existing), normalize(expected), false)
|
||||||
|
|
||||||
|
// If there are any insertions or deletions, content differs
|
||||||
|
for _, diff := range diffs {
|
||||||
|
if diff.Type == diffmatchpatch.DiffInsert || diff.Type == diffmatchpatch.DiffDelete {
|
||||||
|
cylogger.Trace("Content differs at %q", diff.Text)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func normalize(text string) string {
|
||||||
|
// Standardize line endings
|
||||||
|
text = strings.ReplaceAll(text, "\r\n", "\n")
|
||||||
|
text = strings.ReplaceAll(text, "\r", "\n")
|
||||||
|
|
||||||
|
// Split into lines and normalize each
|
||||||
|
lines := strings.Split(text, "\n")
|
||||||
var normalizedLines []string
|
var normalizedLines []string
|
||||||
|
|
||||||
for _, line := range lines {
|
for _, line := range lines {
|
||||||
normalizedLines = append(normalizedLines, strings.TrimSpace(line))
|
trimmed := strings.TrimSpace(line)
|
||||||
|
if trimmed != "" { // Skip empty lines
|
||||||
|
normalizedLines = append(normalizedLines, trimmed)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return strings.Join(normalizedLines, "\n")
|
// Join with single newlines and trim ends
|
||||||
|
result := strings.Join(normalizedLines, "\n")
|
||||||
|
return strings.TrimSpace(result)
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user