Beauty Framework CLI
Requires
- php: >=8.1
Requires (Dev)
- phpunit/phpunit: ^12.3@dev
- psr/container: ^2.0@dev
This package is not auto-updated.
Last update: 2025-06-10 20:30:59 UTC
README
The beauty-framework/cli
package provides a simple, extensible command-line interface (CLI) system for the Beauty Framework. It supports framework-native commands (like code generation, migrations, and cache handling) as well as custom project-defined commands and module-level commands.
Features
- Command registration via configuration or DI
- PSR-compatible structure
- Built-in help/version commands
- Colorized output with support for
info()
,warn()
,error()
,success()
,debug()
andtable()
- Command auto-discovery and dynamic loading (planned)
- Code generators (controller, middleware, request, CLI command)
- Contract for custom registrator class (
\Beauty\Cli\Console\Contracts\CommandsRegistryInterface
)
CLI Entry Point
Create a beauty
executable file in the root of your project:
#!/usr/bin/env php <?php use Beauty\Cli\ConsoleKernel; require __DIR__ . '/vendor/autoload.php'; require __DIR__ . '/helpers.php'; $commands = require __DIR__ . '/config/cli.php'; $kernel = new ConsoleKernel($commands); exit($kernel->run($argv));
Make it executable:
chmod +x beauty
Configuration
Define your commands in config/cli.php
:
return [ \Beauty\Cli\Commands\VersionCommand::class, \Beauty\Cli\Commands\Generate\ControllerCommand::class, \App\Console\Commands\MyCommand::class, ];
Alternatively, load them from modules:
return array_merge( [ \Beauty\Cli\Commands\HelpCommand::class, ], \Beauty\Orm\OrmCommands::get(), \Beauty\Cache\CacheCommands::get(), );
Base Command API
Extend Beauty\Cli\AbstractCommand
:
class MyCommand extends AbstractCommand { public function name(): string { return 'my:command'; } public function description(): string { return 'Do something cool'; } public function handle(array $args): int { CliOutput::success('It worked!'); return 0; } }
Use CliOutput
for colorized output:
CliOutput::info("Info message"); CliOutput::warn("Warning"); CliOutput::success("Done"); CliOutput::error("Something broke"); CliOutput::table(['ID', 'Name'], [[1, 'User'], [2, 'Admin']]);
Flags like --verbose
and --debug
are supported automatically.
Code Generators
Run generators via:
php beauty generate:controller User php beauty generate:command SyncOrders php beauty generate:middleware Auth php beauty generate:request Hello
Supports nested directories:
php beauty generate:controller Admin/User
Creates app/Controllers/Admin/UserController.php
Stubs
All generator templates are located in beauty-framework/cli/stubs/
. You can override them per project if needed by checking for project-local stub before falling back.
Stub placeholders:
{{ namespace }}
{{ class }}
{{ route }}
(in controllers){{ command_name }}
(in CLI commands)
Planned
- Module auto-discovery for commands
- Interactive prompts (ask, confirm, choice)
- Migrations, seeders, testing commands
- Override stubs
License
MIT