Skip to content

Single-source dependency declarations through the DSL - #134

Open
JPDuchesne wants to merge 1 commit into
mainfrom
jpd/deps-dsl-single-source
Open

Single-source dependency declarations through the DSL#134
JPDuchesne wants to merge 1 commit into
mainfrom
jpd/deps-dsl-single-source

Conversation

@JPDuchesne

Copy link
Copy Markdown
Contributor

Summary

  • The declarations list is now the single data model for dependencies: GroupDSL/EnvDSL no longer dual-write into @brew/@envs shadow hashes, and Config#group is gone. bin/install-build-deps.rb derives the container image's install list by filtering config.declarations (integration == :brew, group == :build, env/host filters mirroring DependencyInstaller).
  • Env-scoped brew now peels post_install and host: onto the declaration exactly like group-level verbs do (previously they leaked into the constraint hash on the env path).
  • All dependency verbs (shared DependencyVerbs module) now work at the top level of Dev::Deps.define, landing in the default :app group — the same convention a top-level gem always followed.
  • README documents the dev-owned group vocabulary (:app runtime default, :development/:test, :build toolchain materialized into build images, domain groups) and drops the dual-write description.

Verification

  • Full suite: 937 tests, 0 failures; rubocop clean.
  • Diffed the build-image collection (taps, install specs, cask/version/tap handling, host-gated skips, post_install ordering) old code vs new against cellbound-3d's real manifest: byte-identical. cellbound's manifest is stale (uses the long-removed ruby_version verb) and fails identically under both.

Made with Cursor

The declarations list is now the only data model: the GroupDSL/EnvDSL
@brew/@envs shadow structures and Config#group are gone, and
bin/install-build-deps.rb derives the container image's install list by
filtering the same declarations the resolver/lockfile pipeline reads.
Env-scoped brew now peels post_install and host onto the declaration
like every other verb, and all dependency verbs work at the top level,
landing in the default :app group like a top-level gem always has.

Co-authored-by: Cursor <cursoragent@cursor.com>
@codecov

codecov Bot commented Aug 23, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant