dyff

package
v0.11.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 1, 2024 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Overview

Package dyff mainly comes from GitHub repo [https://github.com/homeport/dyff](https://github.com/homeport/dyff), version `v1.1.0`, you may check them under package `pkg/dyff`.

A few changes made by KusionStack: - `custom_comparator.go` provide a map of special fields and its comparator function, which is injected into report of `CompareInputFiles`.

Index

Constants

View Source
const (
	ADDITION     = '+'
	REMOVAL      = '-'
	MODIFICATION = '±'
	ORDERCHANGE  = '⇆'
)

Constants to distinguish between the different kinds of differences

Variables

View Source
var CustomComparatorMap = map[string]Comparator{
	"/spec/template/metadata/annotations/pod.beta1.sigma.ali/alloc-spec":           JSONStrComparator,
	"/spec/template/metadata/annotations/pod.beta1.sigma.ali/container-state-spec": JSONStrComparator,
}
View Source
var DebugLogger = log.New(io.Discard, "Debug: ", log.Lshortfile)

DebugLogger is the debugging logger definition

View Source
var ErrorLogger = log.New(os.Stderr, "Error: ", log.Lshortfile)

ErrorLogger is the error logger definition

View Source
var LoggingLevel = ERROR

LoggingLevel stores the currently configured logging level

View Source
var WarningLogger = log.New(io.Discard, "Warning: ", log.Lshortfile)

WarningLogger is the warning logger definition

Functions

func AsSequenceNode

func AsSequenceNode(list []string) *yamlv3.Node

AsSequenceNode translates a string list into a SequenceNode

func ChangeRoot

func ChangeRoot(inputFile *ytbx.InputFile, path string, useGoPatchPaths bool, translateListToDocuments bool) error

ChangeRoot changes the root of an input file to a position inside its document based on the given path. Input files with more than one document are not supported, since they could have multiple elements with that path.

func CreateTableStyleString

func CreateTableStyleString(separator string, indent int, columns ...string) string

CreateTableStyleString takes the multi-line input strings as columns and arranges an output string to create a table-style output format with proper padding so that the text blocks can be arranged next to each other.

func JSONStrComparator added in v0.4.1

func JSONStrComparator(from, to string) bool

func SetLoggingLevel

func SetLoggingLevel(loggingLevel LogLevel)

SetLoggingLevel will initialise the logging set-up according to the provided input

Types

type BriefReport

type BriefReport struct {
	Report
}

BriefReport is a reporter that only prints a summary

func (*BriefReport) WriteReport

func (report *BriefReport) WriteReport(out io.Writer) error

WriteReport writes a brief summary to the provided writer

type Comparator

type Comparator func(from, to string) bool

type CompareOption

type CompareOption func(*compareSettings)

CompareOption sets a specific compare setting for the object comparison

func IgnoreOrderChanges

func IgnoreOrderChanges(value bool) CompareOption

IgnoreOrderChanges disables the detection for changes of the order in lists

func NonStandardIdentifierGuessCountThreshold

func NonStandardIdentifierGuessCountThreshold(nonStandardIdentifierGuessCountThreshold int) CompareOption

NonStandardIdentifierGuessCountThreshold specifies how many list entries are needed for the guess-the-identifier function to actually consider the key name. Or in short, if the lists only contain two entries each, there are more possibilities to find unique enough key, which might no qualify as such.

func PathsToIgnoreAddition

func PathsToIgnoreAddition(paths []string) CompareOption

PathsToIgnoreAddition configures list of path to ignore addition change

func PathsToIgnoreRemoval

func PathsToIgnoreRemoval(paths []string) CompareOption

PathsToIgnoreRemoval configures list of path to ignore removal change

type Detail

type Detail struct {
	Kind rune
	From *yamlv3.Node
	To   *yamlv3.Node
}

Detail encapsulate the actual details of a change, mainly the kind of difference and the values

type Diff

type Diff struct {
	Path    ytbx.Path
	Details []Detail
}

Diff encapsulates everything noteworthy about a difference

type HumanReport

type HumanReport struct {
	NoTableStyle         bool
	DoNotInspectCerts    bool
	OmitHeader           bool
	UseGoPatchPaths      bool
	MinorChangeThreshold float64

	Report
}

HumanReport is a reporter with human-readable output in mind

func (*HumanReport) LoadX509Certs

func (report *HumanReport) LoadX509Certs(from, to string) (string, string, error)

LoadX509Certs tries to load the provided strings as a cert each and returns a textual representation of the certs, or an error if the strings are not X509 certs

func (*HumanReport) WriteReport

func (report *HumanReport) WriteReport(out io.Writer) error

WriteReport writes a human-readable report to the provided writer

type LogLevel

type LogLevel int

LogLevel covers different types of logging severities

const (
	NONE LogLevel = iota
	ERROR
	WARN
	DEBUG
)

List of possile logging levels

type Report

type Report struct {
	From  ytbx.InputFile
	To    ytbx.InputFile
	Diffs []Diff
}

Report encapsulates the actual end-result of the comparison: The input data and the list of differences

func CompareInputFiles

func CompareInputFiles(from ytbx.InputFile, to ytbx.InputFile, compareOptions ...CompareOption) (Report, error)

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.

type ReportWriter

type ReportWriter interface {
	WriteReport(out io.Writer) error
}

ReportWriter defines the interface required for types that can write reports

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL