Skip to content

wjase/diffyaml

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

diffyaml

Go

Semantic difference for yaml files

diffyaml compares two yaml files and produces a list of changes which reflect a knowledge of the structure of yaml files. Yaml has three main types of nodes:

  • Scalar values (strings, numbers)
  • Mapped values (name=john, age=25)
  • Sequence values - an ordered list of items

Of course all of these can be mixed and matched in any combo.

yaml diff makes assumptions when comparing each node in the tree based on its type.

Output

The report produced by diffyam is itself a yaml sequence of ChangeLog entries which can have

  • Path - A path to the affected node. Adds refer to the item in the new yaml file. Deletions refer to the old yaml file.
  • To, ToIndex - The yaml.Node in the new document for Adds,Moves
  • From, FromIndex - The yaml.Node in the original document for Deletes, Moves

Usage Syntax - command line

diffyaml filePath1 filePath2

Will produce the change log to stdout. All node paths are prefixed with 'doc.'

example

Running:

diffyaml ./fixtures/simple/map-key-added.from.yaml ./fixtures/ simple/map-key-added.to.yaml

produces:

- path: doc.fourth-key
  type: added
  to: item4

Usage - golang library

You can use the Changelog items produced by diffyam to do more specific analysis relevent to a given domain, eg a kubernetes resource defintion or openapi spec.

golang exmaple

coming soon

About

Structured difference tool for yaml files

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages