Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Command Builder

Command Builder Laravel Package

digipolisgent/command-builder

PHP command builder to compose complex shell command strings fluently. Add flags/arguments, pipe output, and chain onSuccess/onFailure blocks to build conditional command groups for safe execution and readable CLI scripting.

View on GitHub
Deep Wiki
Context7

A generic shell command builder.

Frequently asked questions about Command Builder
How can I use this package in a Laravel Artisan command for deployment scripts?
Wrap the CommandBuilder output in Symfony/Process to execute commands safely. For example, create a command with `CommandBuilder::create('php artisan migrate')` and chain onSuccess/onFailure handlers, then pass the result to `Process::fromShellCommandline()`. This ensures structured execution with error handling.
Does this package support Laravel’s queue system for async shell operations?
No, this package is synchronous and blocks execution. For async workflows, use Laravel Queues to wrap the CommandBuilder-generated shell string in a job, then handle failures with `queue:failed` or custom retry logic. The package itself doesn’t integrate natively with Laravel Queues.
What Laravel versions does digipolisgent/command-builder support?
The package is PHP-focused and has no Laravel-specific dependencies, so it works with any Laravel version (5.5+). However, since it’s abandoned (last update 2019), test thoroughly for compatibility with newer PHP versions (8.0+) and Laravel’s process management changes.
How do I prevent shell injection vulnerabilities when using dynamic arguments?
Always sanitize dynamic inputs with `escapeshellarg()` or use Symfony/Process’s built-in escaping. Avoid passing user-provided data directly to `addArgument()` or `addFlag()`. For example, replace `addArgument($userInput)` with `addArgument(escapeshellarg($userInput))` or use Process’s `setCommand()` method.
Can I integrate this with Laravel Notifications for post-execution alerts?
Yes, chain `onSuccess()` or `onFailure()` to trigger custom logic, then dispatch Laravel Notifications inside those handlers. For example, use `onFailure()` to call `Notification::send($user, new CommandFailed($command))` after generating the shell string.
What’s the difference between this and Symfony/Process for building shell commands?
Symfony/Process handles execution directly, while this package builds *readable* shell strings with declarative chaining (e.g., pipes, success/failure blocks). Use this if you need complex conditional logic in a single command string; otherwise, Symfony/Process is more robust for execution itself.
How do I test CommandBuilder output in Laravel’s PHPUnit?
Mock the shell execution by testing the generated command string directly. Use `assertEquals()` to compare the output of `$builder->getCommand()` with expected shell syntax. For integration tests, use `Process::fromShellCommandline()` with a temporary directory to avoid real system calls.
Is this package suitable for production Laravel applications?
Proceed with caution. The package is abandoned and lacks Laravel-specific updates. For critical workflows, consider forking it or using alternatives like `spatie/laravel-command` or custom solutions. Audit the generated shell strings for edge cases (e.g., spaces in arguments).
Can I use this for cross-platform Laravel deployments (Linux/Windows)?
Test thoroughly—shell syntax varies by OS. Use `Process::isSuccessful()` to handle cross-platform errors. Avoid Windows-specific flags (e.g., `/C` for `cmd.exe`) unless explicitly targeting that OS. For portability, prefer POSIX-compliant commands or abstract execution via Process.
What alternatives exist for building shell commands in Laravel?
For Laravel-specific solutions, consider `spatie/laravel-command` (for CLI tools) or `symfony/process` (for direct execution). For dynamic pipelines, explore `league/container` with custom command builders. If you need async, pair this package with Laravel Queues or use `react/promise` for non-blocking execution.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
terminal42/code-quality-tools
codifyo/ts-generator-bundle
andydefer/laravel-cluster
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky