Skip to content

Commit

Permalink
Add command-line flag to disable rename detection
Browse files Browse the repository at this point in the history
Add command-line flag to disable the rename detection.
  • Loading branch information
HeavyWombat committed Feb 2, 2025
1 parent 5673bf0 commit 02563bb
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 3 deletions.
1 change: 1 addition & 0 deletions internal/cmd/between.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ types are: YAML (http://yaml.org/) and JSON (http://json.org/).
dyff.IgnoreWhitespaceChanges(reportOptions.ignoreWhitespaceChanges),
dyff.KubernetesEntityDetection(reportOptions.kubernetesEntityDetection),
dyff.AdditionalIdentifiers(reportOptions.additionalIdentifiers...),
dyff.DetectRenames(reportOptions.detectRenames),
)

if err != nil {
Expand Down
7 changes: 6 additions & 1 deletion internal/cmd/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ type reportConfig struct {
omitHeader bool
useGoPatchPaths bool
ignoreValueChanges bool
detectRenames bool
minorChangeThreshold float64
multilineContextLines int
additionalIdentifiers []string
Expand All @@ -67,6 +68,8 @@ var defaults = reportConfig{
exitWithCode: false,
omitHeader: false,
useGoPatchPaths: false,
ignoreValueChanges: false,
detectRenames: true,
minorChangeThreshold: 0.1,
multilineContextLines: 4,
additionalIdentifiers: nil,
Expand All @@ -88,7 +91,9 @@ func applyReportOptionsFlags(cmd *cobra.Command) {
cmd.Flags().StringSliceVar(&reportOptions.excludes, "exclude", defaults.excludes, "exclude reports from a set of differences based on supplied arguments")
cmd.Flags().StringSliceVar(&reportOptions.filterRegexps, "filter-regexp", defaults.filterRegexps, "filter reports to a subset of differences based on supplied regular expressions")
cmd.Flags().StringSliceVar(&reportOptions.excludeRegexps, "exclude-regexp", defaults.excludeRegexps, "exclude reports from a set of differences based on supplied regular expressions")
cmd.Flags().BoolVarP(&reportOptions.ignoreValueChanges, "ignore-value-changes", "v", false, "exclude changes in values")
cmd.Flags().BoolVarP(&reportOptions.ignoreValueChanges, "ignore-value-changes", "v", defaults.ignoreValueChanges, "exclude changes in values")
cmd.Flags().BoolVar(&reportOptions.detectRenames, "detect-renames", defaults.detectRenames, "enable detection for renames (document level for Kubernetes resources)")

// Main output preferences
cmd.Flags().StringVarP(&reportOptions.style, "output", "o", defaults.style, "specify the output style, supported styles: human, brief, github, gitlab, gitea")
cmd.Flags().BoolVarP(&reportOptions.omitHeader, "omit-header", "b", defaults.omitHeader, "omit the dyff summary header")
Expand Down
14 changes: 12 additions & 2 deletions pkg/dyff/core.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ type compareSettings struct {
IgnoreOrderChanges bool
IgnoreWhitespaceChanges bool
KubernetesEntityDetection bool
DetectRenames bool
AdditionalIdentifiers []string
}

Expand Down Expand Up @@ -88,6 +89,13 @@ func KubernetesEntityDetection(value bool) CompareOption {
}
}

// DetectRenames enabled detection of renames so that it correlates two entries based on their identifier field
func DetectRenames(value bool) CompareOption {
return func(settings *compareSettings) {
settings.DetectRenames = value
}
}

// CompareInputFiles is one of the convenience main entry points for comparing
// objects. In this case the representation of an input file, which might
// contain multiple documents. It returns a report with the list of differences.
Expand Down Expand Up @@ -339,8 +347,10 @@ func (compare *compare) documentNodes(from, to ytbx.InputFile) ([]Diff, error) {
}),
)

if err := idem.DetectRenames(changes, nil); err != nil {
return nil, err
if compare.settings.DetectRenames {
if err := idem.DetectRenames(changes, nil); err != nil {
return nil, err
}
}

// Push rename detection results
Expand Down
1 change: 1 addition & 0 deletions pkg/dyff/output_human_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ input: |+
assets("kubernetes/rename/to.yaml"),
assets("kubernetes/rename/expected-dyff.human"),
false,
dyff.DetectRenames(true),
)
})
})
Expand Down

0 comments on commit 02563bb

Please sign in to comment.