mi/puli-metadata-file-locator-bundle
Symfony bundle that integrates Puli's metadata file locator, letting you resolve and locate package resource files through Puli's metadata-driven path system. It wires the locator into Symfony's service container so bundles and libraries can discover assets and configuration reliably.
/vendor/package/config/validation.yml) to real filesystem paths so Symfony's metadata loaders can find them. The PM decision it informs is how your platform lets packages and tenants ship their own config: hardcoded paths, framework-native conventions, or an indirection layer. A short spike is enough to learn whether that indirection is worth owning.file_locator; a bespoke service is often cheaper than inheriting an orphaned dependency tree.MetadataFileLocator, no bundle kernel, and no compiler pass to hook in Laravel; the integration point does not exist. If the roadmap is Laravel, the analogous decision — package-provided config, resource_path(), vendor:publish, composer.json extra.laravel discovery — is already solved natively and should be treated as a separate evaluation.Adopt only when all of the following hold:
webmozart/puli) in a Symfony 2.x/3.x application and need Symfony's metadata loaders to see Puli-resolved paths — without this bundle, file_locator only understands filesystem paths and @Bundle notation.symfony/* requirements.Look elsewhere — the default position — when:
%kernel.project_dir% parameters, Laravel's publish/discovery mechanisms, or a small custom FileLocatorInterface decorator solve it without an abandoned dependency.To executives: This is a small, MIT-licensed integration layer that lets metadata files be addressed by logical name rather than physical path — a de-risking input to a decision we need to make anyway: whether resource indirection belongs in our platform contract. License cost is zero; ownership cost is not. Upstream has no active maintainer and no downstream users, so I recommend treating it as a time-boxed spike or a fork we own, never as a dependency we adopt. Ask: approve one engineer-week to prototype behind a feature flag, with a documented exit plan and no exposure in shipped package contracts until we commit to owning that contract.
To engineering: The bundle decorates Symfony's file_locator so LoaderInterface implementations resolve Puli-style resource paths. That is a narrow, well-understood seam — which is also the argument against taking the dependency: we can reproduce it in-house in less time than it takes to audit and pin the transitive Puli tree. Recommendation: spike it to validate the developer experience, then either fork with a named internal maintainer in the repo, or reimplement the decorator against the current Symfony service definition. Note for the record: this is a Symfony bundle, not a Laravel package — in a Laravel codebase there is no integration seam, and the requirement maps onto native config publishing and resource_path() instead. In either case, do not sequence this ahead of a framework upgrade; that work deletes this dependency regardless.
Bottom line for the decision log: Evaluate, don't adopt. Use it to answer the architecture question, budget for ownership from day one, and document the metadata resolution order explicitly — that knowledge leaves with whoever introduces it.
How can I help you explore Laravel packages today?