{"id":15286523,"url":"https://github.com/notcalle/ruby-dagger","last_synced_at":"2026-01-30T14:18:17.418Z","repository":{"id":56893406,"uuid":"117863032","full_name":"notCalle/ruby-dagger","owner":"notCalle","description":null,"archived":false,"fork":false,"pushed_at":"2023-07-10T09:22:44.000Z","size":232,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-05T13:42:00.037Z","etag":null,"topics":["dag","json","key-trees","yaml"],"latest_commit_sha":null,"homepage":null,"language":"Ruby","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/notCalle.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-01-17T16:35:44.000Z","updated_at":"2024-08-07T20:37:07.000Z","dependencies_parsed_at":"2022-08-21T01:20:51.398Z","dependency_job_id":null,"html_url":"https://github.com/notCalle/ruby-dagger","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/notCalle%2Fruby-dagger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/notCalle%2Fruby-dagger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/notCalle%2Fruby-dagger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/notCalle%2Fruby-dagger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/notCalle","download_url":"https://codeload.github.com/notCalle/ruby-dagger/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245175341,"owners_count":20572781,"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":["dag","json","key-trees","yaml"],"created_at":"2024-09-30T15:16:16.286Z","updated_at":"2026-01-30T14:18:17.366Z","avatar_url":"https://github.com/notCalle.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Gem Version](https://badge.fury.io/rb/ruby-dagger.svg)](https://badge.fury.io/rb/ruby-dagger)\n[![Maintainability](https://api.codeclimate.com/v1/badges/4038215eb129292a826d/maintainability)](https://codeclimate.com/github/notCalle/ruby-dagger/maintainability)\n[![codecov](https://codecov.io/gh/notCalle/ruby-dagger/branch/master/graph/badge.svg)](https://codecov.io/gh/notCalle/ruby-dagger)\n[![Ruby](https://github.com/notCalle/ruby-dagger/actions/workflows/ruby.yml/badge.svg)](https://github.com/notCalle/ruby-dagger/actions/workflows/ruby.yml)\n\n# Dagger\n\n`Dagger` can manage a\n[directed acyclic graph](https://github.com/notcalle/tangle) of\n[key trees](https://github.com/notcalle/keytree), inspired by the ideas behind [PalletJack](https://github.com/saab-simc-admin/palletjack).\n\nThe DAG is stored in a regular posix file system hierarchy, where\n_directories_ are vertices with a forest of key trees from the contained\n_files_. Edges are formed from the directory structure, and _symlinks_.\n\nEdge direction (default top-\u003edown \u0026 target-\u003esource) is selectable,\nbut key tree inheritence is always top-\u003edown \u0026 target-\u003esource.\n\n```\nspec/fixture/graph\n├── vertex1\n│   ├── a.yaml                  # a.b = 2\n│   └── c.yaml                  # c = 3\n└── vertex2\n    ├── b.yaml                  # b = 2\n    └── parent -\u003e ../vertex1    # a.b = 2, c = 3\n```\n\nSee the [changelog](CHANGELOG.md) for recent changes.\n\n## Installation\n\nAdd this line to your application's Gemfile:\n\n```ruby\ngem 'ruby-dagger'\n```\n\nAnd then execute:\n\n    $ bundle\n\nOr install it yourself as:\n\n    $ gem install ruby-dagger\n\n## Usage\n\n    $ bin/console\n```ruby\ng=Dagger.load('spec/fixture/graph')\n=\u003e #\u003cDagger::Graph: 3 vertices, 3 edges\u003e\ng['/vertex1']['a.b']\n=\u003e 2\ng['/vertex2']['a.b']\n=\u003e 2\ng['/vertex2'].local['a.b']\n=\u003e nil\n```\n\n## Development\n\nAfter checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.\n\nTo install this gem onto your local machine, run `bundle exec rake install`.\n\n## Contributing\n\nBug reports and pull requests are welcome on GitHub at https://github.com/notCalle/ruby_dagger. Pull requests should be rebased to HEAD of `master` before submitting, and all commits must be signed with valid GPG key. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.\n\n## License\n\nThe gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).\n\n## Code of Conduct\n\nEveryone interacting in the RubyDagger project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/notCalle/ruby_dagger/blob/master/CODE_OF_CONDUCT.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotcalle%2Fruby-dagger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnotcalle%2Fruby-dagger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotcalle%2Fruby-dagger/lists"}