- What is marcw/wurst-bundle?
- marcw/wurst-bundle is a Symfony bundle that integrates the Wurst library into Symfony applications by wiring its services into the framework container and exposing configuration through YAML or PHP config files. It auto-registers services and compiler passes, validates configuration, and adds Twig- and controller-friendly helpers. It is a Symfony Bundle, not a Laravel package, so it is registered through the Symfony kernel rather than a service provider.
- Can I use marcw/wurst-bundle in a Laravel application?
- Not directly. The integration surface is a Symfony Bundle subclass registered through the kernel plus a console command built on Symfony's console, and Laravel has no bridge for either. Pulling in symfony/framework-bundle just to satisfy one decorative command is a dependency cost far out of proportion to the value. Reimplementing the output as a native artisan command is the realistic path.
- How do I install marcw/wurst-bundle?
- In a Symfony app you would run composer require marcw/wurst-bundle, register the bundle in your kernel or bundles.php, and add its configuration to your config files per environment. In practice the install is the blocker: the repository is archived and its Composer constraints likely target Symfony 2.x/3.x and PHP 5.x/7.x. Verify the composer.json requirements before attempting it on a modern stack.
- Is marcw/wurst-bundle still maintained?
- No. The repository is archived with zero dependents, which means no maintainer, no issue triage, and no forward path for PHP or Symfony upgrades. Archiving also means the license may not be explicitly declared, which is a recurring problem with abandoned repositories. Treat it as read-only source material rather than a live dependency.
- Which PHP and Symfony versions does marcw/wurst-bundle support?
- The package is old enough that its composer.json almost certainly pins Symfony 2.x or 3.x and PHP 5.x or 7.x constraints. Those will collide with a modern Laravel or Symfony application running PHP 8.1 and above. Always read the constraint block before requiring it, because the conflict will surface as an unresolvable dependency set rather than a clear error.
- Is it safe to install marcw/wurst-bundle with --ignore-platform-reqs?
- No. Using that flag to force an archived package past platform constraints silently degrades dependency resolution for the entire application, not just this one package. It hides real incompatibilities and leaves your lockfile in a state no one can reason about later. Vendoring the code under your own namespace avoids the flag entirely.
- What does marcw/wurst-bundle actually output?
- The functional surface is a handful of hardcoded ASCII strings rendered to stdout, and the payload contains non-ASCII characters such as the umlaut in wurst. On Windows terminals and some CI log consumers that can render as mojibake. Confirm UTF-8 handling in your output pipeline before shipping it anywhere users will see it.
- Can I copy the code instead of requiring the package?
- Yes, and that is the recommended approach. Copy the rendering payload and any small helpers into a namespaced class with a header citing the source repository, the commit SHA, and the license. This is a half-day task with no external coupling and it eliminates the supply chain, lockfile, and encoding risks in one move. Confirm the license is declared before redistributing the copied code.
- How do I reimplement marcw/wurst-bundle as a Laravel artisan command?
- Create app/Console/Commands/WurstCommand.php extending Illuminate\Console\Command and store the ASCII art in a template or resource file rather than inline strings. Laravel's standard command discovery handles registration, so you need no service provider and no emulation of Symfony kernel semantics. The bundle's value is its output, not its wiring.
- How should I test the ported command and where should it run?
- Add one feature test asserting the command exits 0 and emits the expected output, and pin the test matrix to a single PHP version since this command has no business expanding your supported-version surface. Only add it to CI if the command ships in default artisan discovery. Decide deliberately whether it is exposed in local only or also in staging demos, since that determines whether production surfaces it at all.