{"id":50987190,"url":"https://github.com/yaml/go-yaml-yq","last_synced_at":"2026-06-24T23:00:26.423Z","repository":{"id":365786685,"uuid":"1273746799","full_name":"yaml/go-yaml-yq","owner":"yaml","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-18T22:27:40.000Z","size":173,"stargazers_count":2,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-19T21:25:57.637Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yaml.png","metadata":{"files":{"readme":"ReadMe.md","changelog":null,"contributing":"Contributing.md","funding":null,"license":"License","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,"zenodo":null,"notice":"Notice","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-18T20:44:32.000Z","updated_at":"2026-06-19T15:15:15.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/yaml/go-yaml-yq","commit_stats":null,"previous_names":["yaml/go-yaml-yq"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/yaml/go-yaml-yq","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yaml%2Fgo-yaml-yq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yaml%2Fgo-yaml-yq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yaml%2Fgo-yaml-yq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yaml%2Fgo-yaml-yq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yaml","download_url":"https://codeload.github.com/yaml/go-yaml-yq/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yaml%2Fgo-yaml-yq/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34623906,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-21T02:00:05.568Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2026-06-19T21:00:51.180Z","updated_at":"2026-06-21T20:00:33.947Z","avatar_url":"https://github.com/yaml.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# go-yaml-yq\n\nA Go binding for yq's expression engine over `go.yaml.in/yaml/v4`\nrepresentation nodes.\n\nStatus: prototype.\n\n```bash\ngo get github.com/yaml/go-yaml-yq\n```\n\nThis module is tested with Go 1.23. The repository Makefiles install Go\n1.23.12 locally through Makes, so a system Go installation is not required for\ndevelopment.\n\n## Purpose\n\n`go-yaml-yq` lets Go programs run yq expressions directly against\n`*yaml.Node` values from `go.yaml.in/yaml/v4`.\n\nThe public API is intentionally small:\n\n```go\nfunc Nodes(expr string, nodes ...*yaml.Node) ([]*yaml.Node, error)\nfunc Node(expr string, nodes ...*yaml.Node) (*yaml.Node, error)\n\nfunc RenderYAML(node *yaml.Node, opts ...RenderOption) ([]byte, error)\nfunc RenderJSON(node *yaml.Node, opts ...RenderOption) ([]byte, error)\nfunc WriteYAML(w io.Writer, node *yaml.Node, opts ...RenderOption) error\nfunc WriteJSON(w io.Writer, node *yaml.Node, opts ...RenderOption) error\n\nfunc DumpNode(node *yaml.Node) ([]byte, error)\nfunc DumpNodeLong(node *yaml.Node) ([]byte, error)\nfunc WriteNodeDump(w io.Writer, node *yaml.Node) error\nfunc WriteNodeDumpLong(w io.Writer, node *yaml.Node) error\n```\n\nUse it when you want yq's query and expression language from Go code, while\nkeeping the YAML representation as go-yaml v4 nodes.\n\n## Contract\n\n`Node` and `Nodes` are pure.\n\nThey never mutate input nodes. Every returned node is a fresh detached copy,\nnot an interior pointer into the source document.\n\n```go\nupdated, err := yq.Node(\".image = \\\"example/app:2.0\\\"\", doc)\n// doc is unchanged.\n// updated is a new YAML tree.\n```\n\nFor live in-place structural operations, use the companion\n`github.com/yaml/go-yaml-dom` package. `go-yaml-yq` and `go-yaml-dom` compose\nonly through `*yaml.Node`; neither imports the other.\n\nWhile `go.yaml.in/yaml/v4` is pre-1.0, keep this module, `go-yaml-dom`, and\nconsumers using both on the same `go.yaml.in/yaml/v4` version. Otherwise\n`*yaml.Node` can resolve to distinct Go types.\n\n## API\n\n### Nodes\n\n```go\nnodes, err := yq.Nodes(\".items[]\", doc)\n```\n\n`Nodes` evaluates a yq expression and returns the full result stream.\n\nThe first input node binds to both `.` and `$1`. Additional input nodes bind to\n`$2`, `$3`, and so on:\n\n```go\nmerged, err := yq.Node(\"$1 * $2\", base, overlay)\n```\n\nErrors are returned for malformed expressions, nil input nodes, conversion\nfailures, and evaluation failures.\n\n### Node\n\n```go\nnode, err := yq.Node(\".metadata.name\", doc)\n```\n\n`Node` is the strict single-result form. It returns an error unless the\nexpression yields exactly one result.\n\nUse `Nodes` for expressions that may return zero, one, or many results.\n\n### Render YAML And JSON\n\n```go\nout, err := yq.RenderYAML(doc)\nout, err := yq.RenderJSON(doc)\n```\n\nThe render helpers use yq's own YAML and JSON encoders. They are useful when\nyou want to see how yq would print a node graph, rather than using go-yaml's\n`yaml.Marshal` directly.\n\nColor is enabled by default:\n\n```go\nout, err := yq.RenderYAML(doc, yq.WithColor(false))\n```\n\nOptions:\n\n```go\nyq.WithColor(false)\nyq.WithIndent(4)\nyq.WithUnwrapScalar(false)\n```\n\nThe colorizer is dependency-free and internal to this module. It targets useful\nterminal coloring for common YAML and JSON output; it is not a promise of exact\nbyte-for-byte color parity with the yq CLI.\n\n### Dump Node Structure\n\n```go\nout, err := yq.DumpNode(doc)\nout, err := yq.DumpNodeLong(doc)\n```\n\n`DumpNode` returns a compact YAML description of the `yaml.Node` graph, modeled\nafter `go-yaml -n`.\n\n`DumpNodeLong` returns a profuse YAML description, modeled after `go-yaml -N`,\nincluding node kind, style, tag, comments, scalar text, and content.\n\nThese functions do not render the represented YAML value. They print the node\nstructure itself for inspection and debugging.\n\n## Loading And Printing YAML\n\nMost programs load a YAML document into a document node, then pass\n`doc.Content[0]` to this package:\n\n```go\nfunc loadRoot(path string) (*yaml.Node, error) {\n\tfile, err := os.Open(path)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer file.Close()\n\n\tvar doc yaml.Node\n\tif err := yaml.NewDecoder(file).Decode(\u0026doc); err != nil {\n\t\treturn nil, err\n\t}\n\tif len(doc.Content) == 0 {\n\t\treturn nil, fmt.Errorf(\"%s: empty YAML document\", path)\n\t}\n\treturn doc.Content[0], nil\n}\n```\n\nPrint result nodes with go-yaml:\n\n```go\nout, err := yaml.Marshal(node)\nif err != nil {\n\treturn err\n}\nfmt.Print(string(out))\n```\n\nOr render with yq's encoder:\n\n```go\nout, err := yq.RenderYAML(node, yq.WithColor(false))\nif err != nil {\n\treturn err\n}\nfmt.Print(string(out))\n```\n\n## Expressions\n\nQueries:\n\n```go\nname, err := yq.Node(\".metadata.name\", doc)\nitems, err := yq.Nodes(\".items[]\", doc)\nkeys, err := yq.Nodes(\".data | keys | .[]\", doc)\n```\n\nUpdates:\n\n```go\nupdated, err := yq.Node(\".spec.replicas = 3\", doc)\ndeleted, err := yq.Node(\"del(.metadata.annotations)\", doc)\n```\n\nMultiple input nodes:\n\n```go\nupdated, err := yq.Node(\".spec.template.metadata.labels = $2\", deployment, labels)\nmerged, err := yq.Node(\"$1 * $2\", base, overlay)\n```\n\nKeys containing dots or other special characters need yq bracket syntax:\n\n```go\nvalue, err := yq.Node(`.[\"weird.key\"]`, doc)\n```\n\nOperator behavior follows yq's documentation:\nhttps://mikefarah.gitbook.io/yq/operators\n\n## Merge\n\nThis package can evaluate yq merge expressions:\n\n```go\nmerged, err := yq.Node(\"$1 * $2\", base, overlay)\n```\n\nThat is useful when you intentionally want yq expression semantics.\n\nFor the supported whole-node structural merge API, use `go-yaml-dom`:\n\n```go\ncopy := dom.Clone(base)\nerr := dom.Merge(copy, overlay)\n```\n\n`go-yaml-dom` merge mutates the destination node in place. `go-yaml-yq` returns\na detached copy.\n\n## Example Programs\n\nThe repository has buildable programs under `examples/`. Each example supports:\n\n```bash\nmake build\nmake run\nmake clean\n```\n\nThe same programs are shown below in full.\n\n### Query A File\n\nRun:\n\n```bash\nmake -C examples/query run\ngo run ./examples/query examples/query/sample.yaml '.metadata.labels.app'\n```\n\nProgram:\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\tyq \"github.com/yaml/go-yaml-yq\"\n\tyaml \"go.yaml.in/yaml/v4\"\n)\n\nfunc main() {\n\tif len(os.Args) != 3 {\n\t\tfmt.Fprintf(os.Stderr, \"usage: %s \u003cfile.yaml\u003e \u003cyq-expression\u003e\\n\", os.Args[0])\n\t\tos.Exit(2)\n\t}\n\n\troot, err := loadRoot(os.Args[1])\n\tif err != nil {\n\t\tfmt.Fprintln(os.Stderr, err)\n\t\tos.Exit(1)\n\t}\n\n\tnodes, err := yq.Nodes(os.Args[2], root)\n\tif err != nil {\n\t\tfmt.Fprintln(os.Stderr, err)\n\t\tos.Exit(1)\n\t}\n\n\tfor i, node := range nodes {\n\t\tif i \u003e 0 {\n\t\t\tfmt.Println(\"---\")\n\t\t}\n\t\tif err := printYAML(node); err != nil {\n\t\t\tfmt.Fprintln(os.Stderr, err)\n\t\t\tos.Exit(1)\n\t\t}\n\t}\n}\n\nfunc loadRoot(path string) (*yaml.Node, error) {\n\tfile, err := os.Open(path)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open %s: %w\", path, err)\n\t}\n\tdefer file.Close()\n\n\tvar doc yaml.Node\n\tif err := yaml.NewDecoder(file).Decode(\u0026doc); err != nil {\n\t\treturn nil, fmt.Errorf(\"decode %s: %w\", path, err)\n\t}\n\tif len(doc.Content) == 0 {\n\t\treturn nil, fmt.Errorf(\"%s: empty YAML document\", path)\n\t}\n\treturn doc.Content[0], nil\n}\n\nfunc printYAML(node *yaml.Node) error {\n\tout, err := yaml.Marshal(node)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"marshal result: %w\", err)\n\t}\n\tfmt.Print(string(out))\n\treturn nil\n}\n```\n\n### Update A File Copy\n\nRun:\n\n```bash\nmake -C examples/update run\ngo run ./examples/update examples/update/sample.yaml '.replicas = 3'\n```\n\nProgram:\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\tyq \"github.com/yaml/go-yaml-yq\"\n\tyaml \"go.yaml.in/yaml/v4\"\n)\n\nfunc main() {\n\tif len(os.Args) != 3 {\n\t\tfmt.Fprintf(os.Stderr, \"usage: %s \u003cfile.yaml\u003e \u003cyq-update-expression\u003e\\n\", os.Args[0])\n\t\tos.Exit(2)\n\t}\n\n\troot, err := loadRoot(os.Args[1])\n\tif err != nil {\n\t\tfmt.Fprintln(os.Stderr, err)\n\t\tos.Exit(1)\n\t}\n\n\tupdated, err := yq.Node(os.Args[2], root)\n\tif err != nil {\n\t\tfmt.Fprintln(os.Stderr, err)\n\t\tos.Exit(1)\n\t}\n\tif err := printYAML(updated); err != nil {\n\t\tfmt.Fprintln(os.Stderr, err)\n\t\tos.Exit(1)\n\t}\n}\n\nfunc loadRoot(path string) (*yaml.Node, error) {\n\tfile, err := os.Open(path)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open %s: %w\", path, err)\n\t}\n\tdefer file.Close()\n\n\tvar doc yaml.Node\n\tif err := yaml.NewDecoder(file).Decode(\u0026doc); err != nil {\n\t\treturn nil, fmt.Errorf(\"decode %s: %w\", path, err)\n\t}\n\tif len(doc.Content) == 0 {\n\t\treturn nil, fmt.Errorf(\"%s: empty YAML document\", path)\n\t}\n\treturn doc.Content[0], nil\n}\n\nfunc printYAML(node *yaml.Node) error {\n\tout, err := yaml.Marshal(node)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"marshal result: %w\", err)\n\t}\n\tfmt.Print(string(out))\n\treturn nil\n}\n```\n\n### Merge Two Files\n\nRun:\n\n```bash\nmake -C examples/merge run\ngo run ./examples/merge examples/merge/base.yaml examples/merge/overlay.yaml\n```\n\nProgram:\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\tyq \"github.com/yaml/go-yaml-yq\"\n\tyaml \"go.yaml.in/yaml/v4\"\n)\n\nfunc main() {\n\tif len(os.Args) != 3 {\n\t\tfmt.Fprintf(os.Stderr, \"usage: %s \u003cbase.yaml\u003e \u003coverlay.yaml\u003e\\n\", os.Args[0])\n\t\tos.Exit(2)\n\t}\n\n\tbase, err := loadRoot(os.Args[1])\n\tif err != nil {\n\t\tfmt.Fprintln(os.Stderr, err)\n\t\tos.Exit(1)\n\t}\n\toverlay, err := loadRoot(os.Args[2])\n\tif err != nil {\n\t\tfmt.Fprintln(os.Stderr, err)\n\t\tos.Exit(1)\n\t}\n\n\tmerged, err := yq.Node(\"$1 * $2\", base, overlay)\n\tif err != nil {\n\t\tfmt.Fprintln(os.Stderr, err)\n\t\tos.Exit(1)\n\t}\n\tif err := printYAML(merged); err != nil {\n\t\tfmt.Fprintln(os.Stderr, err)\n\t\tos.Exit(1)\n\t}\n}\n\nfunc loadRoot(path string) (*yaml.Node, error) {\n\tfile, err := os.Open(path)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open %s: %w\", path, err)\n\t}\n\tdefer file.Close()\n\n\tvar doc yaml.Node\n\tif err := yaml.NewDecoder(file).Decode(\u0026doc); err != nil {\n\t\treturn nil, fmt.Errorf(\"decode %s: %w\", path, err)\n\t}\n\tif len(doc.Content) == 0 {\n\t\treturn nil, fmt.Errorf(\"%s: empty YAML document\", path)\n\t}\n\treturn doc.Content[0], nil\n}\n\nfunc printYAML(node *yaml.Node) error {\n\tout, err := yaml.Marshal(node)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"marshal result: %w\", err)\n\t}\n\tfmt.Print(string(out))\n\treturn nil\n}\n```\n\n### Prompt For Expressions\n\nRun:\n\n```bash\nmake -C examples/prompt run\ngo run ./examples/prompt examples/prompt/sample.yaml\n```\n\nProgram:\n\n```go\npackage main\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strings\"\n\n\tyq \"github.com/yaml/go-yaml-yq\"\n\tyaml \"go.yaml.in/yaml/v4\"\n)\n\nfunc main() {\n\tif len(os.Args) != 2 {\n\t\tfmt.Fprintf(os.Stderr, \"usage: %s \u003cfile.yaml\u003e\\n\", os.Args[0])\n\t\tos.Exit(2)\n\t}\n\n\troot, err := loadRoot(os.Args[1])\n\tif err != nil {\n\t\tfmt.Fprintln(os.Stderr, err)\n\t\tos.Exit(1)\n\t}\n\n\tif err := prompt(os.Stdin, os.Stdout, root); err != nil {\n\t\tfmt.Fprintln(os.Stderr, err)\n\t\tos.Exit(1)\n\t}\n}\n\nfunc prompt(in io.Reader, out io.Writer, root *yaml.Node) error {\n\tscanner := bufio.NewScanner(in)\n\tfor {\n\t\tfmt.Fprint(out, \"yq\u003e \")\n\t\tif !scanner.Scan() {\n\t\t\tbreak\n\t\t}\n\t\texpr := strings.TrimSpace(scanner.Text())\n\t\tif expr == \"\" {\n\t\t\tcontinue\n\t\t}\n\t\tif expr == \"exit\" || expr == \"quit\" {\n\t\t\tbreak\n\t\t}\n\n\t\tnodes, err := yq.Nodes(expr, root)\n\t\tif err != nil {\n\t\t\tfmt.Fprintf(out, \"error: %v\\n\", err)\n\t\t\tcontinue\n\t\t}\n\t\tfor i, node := range nodes {\n\t\t\tif i \u003e 0 {\n\t\t\t\tfmt.Fprintln(out, \"---\")\n\t\t\t}\n\t\t\tif err := writeYAML(out, node); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\tif err := scanner.Err(); err != nil {\n\t\treturn fmt.Errorf(\"read expression: %w\", err)\n\t}\n\treturn nil\n}\n\nfunc loadRoot(path string) (*yaml.Node, error) {\n\tfile, err := os.Open(path)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open %s: %w\", path, err)\n\t}\n\tdefer file.Close()\n\n\tvar doc yaml.Node\n\tif err := yaml.NewDecoder(file).Decode(\u0026doc); err != nil {\n\t\treturn nil, fmt.Errorf(\"decode %s: %w\", path, err)\n\t}\n\tif len(doc.Content) == 0 {\n\t\treturn nil, fmt.Errorf(\"%s: empty YAML document\", path)\n\t}\n\treturn doc.Content[0], nil\n}\n\nfunc writeYAML(out io.Writer, node *yaml.Node) error {\n\tdata, err := yaml.Marshal(node)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"marshal result: %w\", err)\n\t}\n\t_, err = out.Write(data)\n\treturn err\n}\n```\n\n### Render With Color\n\nRun:\n\n```bash\nmake -C examples/color run\nmake -C examples/color run FORMAT=json\ngo run ./examples/color examples/color/sample.yaml yaml\n```\n\nProgram:\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\tyq \"github.com/yaml/go-yaml-yq\"\n\tyaml \"go.yaml.in/yaml/v4\"\n)\n\nfunc main() {\n\tif len(os.Args) \u003c 2 || len(os.Args) \u003e 3 {\n\t\tfmt.Fprintf(os.Stderr, \"usage: %s \u003cfile.yaml\u003e [yaml|json]\\n\", os.Args[0])\n\t\tos.Exit(2)\n\t}\n\n\tformat := \"yaml\"\n\tif len(os.Args) == 3 {\n\t\tformat = os.Args[2]\n\t}\n\n\troot, err := loadRoot(os.Args[1])\n\tif err != nil {\n\t\tfmt.Fprintln(os.Stderr, err)\n\t\tos.Exit(1)\n\t}\n\n\tswitch format {\n\tcase \"yaml\":\n\t\terr = yq.WriteYAML(os.Stdout, root, yq.WithColor(true))\n\tcase \"json\":\n\t\terr = yq.WriteJSON(os.Stdout, root, yq.WithColor(true), yq.WithIndent(2))\n\tdefault:\n\t\terr = fmt.Errorf(\"format must be yaml or json, got %q\", format)\n\t}\n\tif err != nil {\n\t\tfmt.Fprintln(os.Stderr, err)\n\t\tos.Exit(1)\n\t}\n}\n\nfunc loadRoot(path string) (*yaml.Node, error) {\n\tfile, err := os.Open(path)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"open %s: %w\", path, err)\n\t}\n\tdefer file.Close()\n\n\tvar doc yaml.Node\n\tif err := yaml.NewDecoder(file).Decode(\u0026doc); err != nil {\n\t\treturn nil, fmt.Errorf(\"decode %s: %w\", path, err)\n\t}\n\tif len(doc.Content) == 0 {\n\t\treturn nil, fmt.Errorf(\"%s: empty YAML document\", path)\n\t}\n\treturn doc.Content[0], nil\n}\n```\n\n## Development\n\nThis repository uses Makes to install Go locally under `.cache/local`; a system\nGo installation is not required. The Makefiles currently use Go 1.23.12.\n\n```bash\nmake test\nmake test-examples\nmake test-all\nmake vet\nmake examples\nmake check\nmake clean\nmake shell\n```\n\nPer-example commands:\n\n```bash\nmake -C examples/query run\nmake -C examples/update run\nmake -C examples/merge run\nmake -C examples/prompt run\nmake -C examples/color run\n```\n\n## CI\n\nGitHub Actions runs tests, hygiene checks, example smoke tests, and CodeQL.\nHygiene includes formatting, `go.mod`/`go.sum`, file lint, spelling, and\nforbidden dependency checks. The dependency check keeps pruned yq format adapter\ndependencies out of the module graph.\n\nDependabot is configured for Go modules and GitHub Actions.\n\n## Vendored Engine\n\nThe expression engine is vendored from `github.com/mikefarah/yq`; see `Notice`.\nThe vendored copy is pruned to avoid non-core format adapter dependencies while\nkeeping yq operators available through the expression engine.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyaml%2Fgo-yaml-yq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyaml%2Fgo-yaml-yq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyaml%2Fgo-yaml-yq/lists"}