puko / console
Advanced console util that make pukoframework get things done on the fly.
0.4.0
2024-09-28 13:28 UTC
Requires
- php: >=7.0|>=8.0
README
Advanced CLI utility that makes the Puko Framework development experience faster and more efficient.
Installation
composer require puko/console --dev
Requirements
- PHP 7.2.5+
- Symfony Console 5.4
- Supported Databases: MySQL, PostgreSQL, SQL Server
Usage
php puko <command> [options] [arguments]
Quick Start
# Show version php puko --version # Show help php puko --help # List all commands php puko list
Commands
Setup Commands
| Command | Description |
|---|---|
setup:db [schema] |
Connect to database and generate models |
setup:secure |
Generate encryption configuration |
setup:auth <name> |
Generate authentication plugin |
setup:controller <type> <name> |
Generate controller (view or service) |
setup:model <action> <name> <schema> |
Interactive model wizard |
Examples
# Setup database php puko setup:db main # Generate encryption config php puko setup:secure # Generate auth plugin php puko setup:auth UsersAuth # Generate controller php puko setup:controller view HomeController php puko setup:controller service UserService # Create model (interactive) php puko setup:model add User main
Routes Commands
| Command | Description |
|---|---|
routes:list |
List all registered routes |
routes:resort |
Sort routes alphabetically |
routes:dir |
Display routes with directories |
routes:view <action> <url> |
Add view route |
routes:service <action> <url> |
Add service (API) route |
routes:crud <schema/table> |
Generate full CRUD service |
routes:console <action> <path> |
Add console route |
routes:socket <action> <path> |
Add WebSocket route |
routes:error <action> |
Set error handler |
routes:lost <action> |
Set 404 handler |
Examples
# List routes php puko routes:list # Add view route php puko routes:view add /home # Add service route php puko routes:service add /api/users # Generate CRUD for table php puko routes:crud main/users
Generate Commands
| Command | Description |
|---|---|
generate:db |
Create database from models (reverse engineer) |
generate:ui |
Generate DataTables UI components |
Examples
# Reverse engineer: create DB from models php puko generate:db # Generate UI components php puko generate:ui
Refresh Commands
| Command | Description |
|---|---|
refresh:db [schema] |
Reload database schema and regenerate models |
php puko refresh:db main
Other Commands
| Command | Description |
|---|---|
serve [port] |
Start PHP built-in server (default: 4000) |
language <directory> |
Build localization files |
element:add <name> |
Generate view element |
element:download <name> |
Download element from repository |
cli <path> |
Execute PHP in console mode |
tests |
Run PHPUnit tests |
Examples
# Start server php puko serve php puko serve 8080 # Build language files php puko language controller/user # Create element php puko element:add DataTable # Run tests php puko tests
Options
| Option | Description |
|---|---|
-h, --help |
Display help for a command |
-q, --quiet |
Do not output any message |
-V, --version |
Display application version |
--ansi |
Force ANSI output |
--no-ansi |
Disable ANSI output |
-n, --no-interaction |
Do not ask interactive questions |
-v, -vv, -vvv |
Increase verbosity |
Project Structure
After using Puko Console, your project will have:
project/
├── config/
│ ├── database.php # Database configuration
│ ├── routes.php # Route definitions
│ ├── encryption.php # Security config
│ └── init.php # Console config
├── controller/ # Service controllers
├── plugins/
│ ├── auth/ # Authentication plugins
│ ├── controller/ # View controllers
│ ├── elements/ # UI elements
│ └── model/ # Model definitions
├── model/ # Model contracts
├── assets/
│ ├── html/ # HTML templates
│ ├── scripts/ # JavaScript files
│ ├── ui/ # UI components
│ └── master/ # Localization files
└── tests/
└── unit/ # Unit tests
PHPDoc Annotations
Puko Console uses PHPDoc annotations for model introspection:
/** * #Table users */ class Users extends Model { /** * #Column id * #PrimaryKey */ public $id = 0; /** * #Column name * #VarChar(100) not null */ public $name = ''; }
Supported Annotations
#Table [name]- Table name#Column [name]- Column definition#PrimaryKey- Primary key field#VarChar(size),#Int,#Text, etc. - Data types
Migration Commands
Database migration system supporting MySQL, PostgreSQL, and SQL Server.
| Command | Description |
|---|---|
migrate:make <name> |
Create new migration file |
migrate:run |
Run pending migrations |
migrate:rollback |
Rollback last migration |
migrate:reset |
Rollback ALL migrations |
migrate:status |
Show migration status |
Migration Make Options
| Option | Description |
|---|---|
--create |
Create a new table |
--table |
Specify table name |
Examples
# Create migration for new table php puko migrate:make create_users_table php puko migrate:make create_users_table --create users # Create migration to modify existing table php puko migrate:make add_email_to_users_table --table users # Run all pending migrations php puko migrate:run # Run specific number of migrations php puko migrate:run --step=3 # Rollback last migration php puko migrate:rollback # Rollback multiple migrations php puko migrate:rollback --step=2 # Rollback ALL migrations php puko migrate:reset # Check migration status php puko migrate:status
Migration File Structure
<?php use pukoconsole\migration\Schema; use pukoconsole\migration\Blueprint; class CreateUsersTable { public function up(): void { Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->timestamps(); }); } public function down(): void { Schema::drop('users'); } }
Blueprint API
// Column types $table->id(); // Primary key auto-increment $table->bigId(); // Bigint primary key $table->string('name', 100); // VARCHAR $table->text('description'); // TEXT $table->integer('age'); // INT $table->bigInteger('quantity'); // BIGINT $table->decimal('price', 8, 2); // DECIMAL $table->boolean('active'); // BOOLEAN/TINYINT $table->date('created_at'); // DATE $table->dateTime('updated_at'); // DATETIME $table->timestamp('expires_at'); // TIMESTAMP $table->binary('data'); // BLOB $table->json('options'); // JSON $table->uuid('uuid'); // UUID // Modifiers $table->string('name')->nullable(); // Allow NULL $table->string('name')->default('Anon'); // DEFAULT value $table->string('email')->unique(); // UNIQUE constraint $table->integer('votes')->unsigned(); // UNSIGNED $table->primary(); // Primary key // Special $table->foreignId('user_id')->references('id')->on('users'); $table->timestamps(); // created_at and updated_at $table->softDeletes(); // deleted_at
Configuration
The console reads from src/config/init.php:
<?php return [ 'version' => '1.0.0', 'repo' => 'https://api.github.com/repos/velliz/puko-elements/contents' ];
Upgrading from Old Version
The command syntax has changed from the old format:
| Old Syntax | New Syntax |
|---|---|
php puko setup db main |
php puko setup:db main |
php puko routes list |
php puko routes:list |
php puko generate db |
php puko generate:db |
php puko serve 8080 |
php puko serve 8080 |
php puko version |
php puko --version |
License
MIT License - Copyright (c) 2018 Didit Velliz