{"id":23089150,"url":"https://github.com/marahin/goyam","last_synced_at":"2026-04-29T03:36:01.285Z","repository":{"id":89622662,"uuid":"124602387","full_name":"Marahin/goyam","owner":"Marahin","description":"Golang library \u0026 standalone program for YAML comparison","archived":false,"fork":false,"pushed_at":"2018-03-09T23:02:34.000Z","size":11,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-03T17:22:32.754Z","etag":null,"topics":["compare","compare-files","go","swagger","yaml","yaml-files"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Marahin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-03-09T23:02:20.000Z","updated_at":"2018-03-09T23:04:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"e70bd1dc-49df-422a-bd36-0ee911d23259","html_url":"https://github.com/Marahin/goyam","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Marahin/goyam","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Marahin%2Fgoyam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Marahin%2Fgoyam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Marahin%2Fgoyam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Marahin%2Fgoyam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Marahin","download_url":"https://codeload.github.com/Marahin/goyam/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Marahin%2Fgoyam/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263548416,"owners_count":23478757,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["compare","compare-files","go","swagger","yaml","yaml-files"],"created_at":"2024-12-16T20:30:00.874Z","updated_at":"2026-04-29T03:35:56.262Z","avatar_url":"https://github.com/Marahin.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GoYAM\n\n  [![pipeline status](https://git.3lab.re/marahin/goyam/badges/master/pipeline.svg)](https://git.3lab.re/marahin/goyam/pipelines?scope=branches)\n\n#### Golang library \u0026 standalone program for YAML comparison\n****\n**GoYAM** started as a simple program that I’ve used for YAML files comparison (in particular: two swagger API definitions).\nScenario was that more than one person could have changed something in the API definition, and I was working on it as well - so I wanted to see what has changed, and how our definitions diverged.\n\nI have never published a package in Golang, and never I have compared  YAML files before - this was a personal learning curve, comments and reviews are welcome.\n\n## Features\n### What does it do?\n\nImagine a monkey on a tree - a young one, that is still curious of the surrounding world - that is interested in two trees standing next to each other. The monkey wants to see what are the difference between the two: it wants to see how many branches does it have, if the leaves on the branches  are same, if they differ anyhow. **This is the definition of GoYAM.**\n\n**GoYAM explores two YAML definitions and shows every difference it can find, make it missing key, a different value, or a different type for given key.**\n\nGoYAM treats missing keys as *errors*, differing values as *warnings*, and differing types as *warnings*.\n\n### Usage\n\n#### Standalone\n\nGoYAM can be used as standalone program:\n```\ngoyam file_1.yml file_2.yml\n```\n\nUsing package example:\n\n```\n➜  goyam git:(master) ✗ goyam examples/yaml\\ files/api-with-examples.yaml examples/yaml\\ files/petstore-expanded.yaml\n(error 0) root \u003e Key `basePath` can be found in `examples/yaml files/petstore-expanded.yaml` but not in `examples/yaml files/api-with-examples.yaml`.\n(error 1) root \u003e Key `definitions` can be found in `examples/yaml files/petstore-expanded.yaml` but not in `examples/yaml files/api-with-examples.yaml`.\n(error 2) root \u003e Key `schemes` can be found in `examples/yaml files/petstore-expanded.yaml` but not in `examples/yaml files/api-with-examples.yaml`.\n(error 3) root \u003e Key `produces` can be found in `examples/yaml files/petstore-expanded.yaml` but not in `examples/yaml files/api-with-examples.yaml`.\n(error 4) root \u003e Key `host` can be found in `examples/yaml files/petstore-expanded.yaml` but not in `examples/yaml files/api-with-examples.yaml`.\n(error 5) root \u003e (info) \u003e Key `termsOfService` can be found in `examples/yaml files/petstore-expanded.yaml` but not in `examples/yaml files/api-with-examples.yaml`.\n(error 6) root \u003e (info) \u003e Key `contact` can be found in `examples/yaml files/petstore-expanded.yaml` but not in `examples/yaml files/api-with-examples.yaml`.\n(error 7) root \u003e (info) \u003e Key `license` can be found in `examples/yaml files/petstore-expanded.yaml` but not in `examples/yaml files/api-with-examples.yaml`.\n(error 8) root \u003e (info) \u003e Key `description` can be found in `examples/yaml files/petstore-expanded.yaml` but not in `examples/yaml files/api-with-examples.yaml`.\n(error 9) root \u003e (paths) \u003e Key `/` can be found in `examples/yaml files/api-with-examples.yaml` but not in `examples/yaml files/petstore-expanded.yaml`.\n(error 10) root \u003e (paths) \u003e Key `/v2` can be found in `examples/yaml files/api-with-examples.yaml` but not in `examples/yaml files/petstore-expanded.yaml`.\n(error 11) root \u003e (paths) \u003e Key `/pets` can be found in `examples/yaml files/petstore-expanded.yaml` but not in `examples/yaml files/api-with-examples.yaml`.\n(error 12) root \u003e (paths) \u003e Key `/pets/{id}` can be found in `examples/yaml files/petstore-expanded.yaml` but not in `examples/yaml files/api-with-examples.yaml`.\n(warning 0) root \u003e (info) \u003e Key `title` (type `string`) has a different value (Simple API overview) in `examples/yaml files/api-with-examples.yaml` than `examples/yaml files/petstore-expanded.yaml` (Swagger Petstore). [Simplwagger API etstoverview]\n(warning 1) root \u003e (info) \u003e Key `version` (type `string`) has a different value (v2) in `examples/yaml files/api-with-examples.yaml` than `examples/yaml files/petstore-expanded.yaml` (1.0.0). [v21.0.0]\n13 errors, 2 warnings found.\n```\n\n#### Package\n\nIt can also be used as a package in your project.\n@TODO - API DOCUMENTATION\n#personal #goyam\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarahin%2Fgoyam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarahin%2Fgoyam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarahin%2Fgoyam/lists"}