# Lockness CLI Reference Complete command reference for the Nessy CLI tool. ## Installation ```bash # Run directly deno run -A jsr:@lockness/cli # Or use the local wrapper deno task cli ``` ## Global Commands ### list List all available commands with descriptions. ```bash deno task cli list ``` ### init Initialize a new Lockness project. ```bash deno task cli init ``` Creates: - `src/` directory structure - `main.ts` entry point - `kernel.tsx` configuration - `deno.json` dependencies - `.env` environment file ## Generation Commands ### make:controller Generate a new controller. ```bash # Basic controller deno task cli make:controller User # With view deno task cli make:controller User --view # Nested controller deno task cli make:controller Admin/User ``` Creates: `src/controller/user_controller.tsx` Options: - `--view` - Auto-generate corresponding view file ### make:action Add a method to an existing controller. ```bash # RESTful action (auto-detects route) deno task cli make:action User index deno task cli make:action User show deno task cli make:action User create deno task cli make:action User store deno task cli make:action User edit deno task cli make:action User update deno task cli make:action User destroy # Custom action with HTTP method deno task cli make:action User approve --method=post deno task cli make:action User export --method=get # With view deno task cli make:action User create --view ``` RESTful Conventions: - `index` → GET / - `show` → GET /:id - `create` → GET /create - `store` → POST / - `edit` → GET /:id/edit - `update` → PUT /:id - `destroy` → DELETE /:id ### make:middleware Generate a new middleware class. ```bash deno task cli make:middleware LogRequest deno task cli make:middleware Auth ``` Creates: `src/middleware/log_request_middleware.ts` ### make:service Generate a new service class. ```bash deno task cli make:service Email deno task cli make:service Payment ``` Creates: `src/service/email_service.ts` ### make:model Generate a Drizzle ORM model. ```bash deno task cli make:model User deno task cli make:model BlogPost ``` Creates: `src/model/user.ts` with Drizzle schema ### make:repository Generate a repository class. ```bash deno task cli make:repository User ``` Creates: `src/repository/user_repository.ts` with CRUD methods ### make:provider Generate a provider class. ```bash deno task cli make:provider User ``` Creates: `src/provider/user_provider.ts` ### make:seeder Generate a database seeder. ```bash deno task cli make:seeder User ``` Creates: `database/seeders/user_seeder.ts` ### make:auth Generate authentication scaffolding. ```bash deno task cli make:auth ``` Creates: - `AuthController` with login/register/logout - `UserProvider` for credential checking - Auth views (login, register) - User model and repository ## Database Commands ### db:generate Generate SQL migrations from Drizzle schema changes. ```bash deno task cli db:generate ``` Analyzes `src/model/*.ts` and creates migration in `database/migrations/` ### db:migrate Run pending migrations. ```bash deno task cli db:migrate ``` Applies all migrations in `database/migrations/` ### db:push Push schema changes directly to database (development only). ```bash deno task cli db:push ``` ⚠️ Skips migrations - use for rapid prototyping only. ### db:studio Open Drizzle Studio (visual database browser). ```bash deno task cli db:studio ``` Opens web interface at `https://local.drizzle.studio` ### db:status Check migration status. ```bash deno task cli db:status ``` Shows applied and pending migrations. ### db:check Validate migration files for conflicts. ```bash deno task cli db:check ``` ### db:fresh Drop all tables and re-run migrations. ```bash deno task cli db:fresh ``` ⚠️ Destructive - deletes all data! ### db:seed Run database seeders. ```bash # Run all seeders deno task cli db:seed # Run specific seeder deno task cli db:seed --class=UserSeeder ``` ## Route Commands ### routes:generate Generate `src/routes.ts` from controller decorators. ```bash deno task cli routes:generate ``` Scans `src/controller/**/*.tsx` and generates route definitions. **Note:** This happens automatically in dev mode via `scripts/watch_routes.ts` ## OpenAPI Commands ### openapi:generate Generate OpenAPI specification from decorators. ```bash deno task cli openapi:generate ``` Creates `public/openapi.json` from controller routes and `@OpenApi` decorators. ### openapi:ui Open Swagger UI for testing API. ```bash deno task cli openapi:ui ``` Starts dev server with Swagger UI at `/openapi` ## Development Workflow ### Standard Development ```bash # Terminal 1: CSS compilation npm run dev:css # Terminal 2: Route generation (watches for changes) deno task dev:routes # Terminal 3: Dev server deno task dev ``` ### Production Build ```bash # Build CSS npm run build:css # Generate routes deno task cli routes:generate # Run server deno task start ``` ## Tips - Use `deno task cli list` to see all available commands - Commands support nested paths: `make:controller Admin/User` - `make:controller --view` saves time on CRUD operations - `make:action` follows RESTful conventions automatically - `db:fresh` is great for resetting dev database - `db:studio` provides visual database inspection - Route generation is automatic in dev mode ## Extension System ### Automatic Command Loading Lockness CLI automatically registers commands from official packages via `loadPackageCommands(cli)`. **Configuration (deno.json):** ```json { "lockness": { "packages": ["drizzle", "openapi", "queue"] } } ``` When a package name is added to this list, the CLI dynamically imports `@lockness/` and registers its commands. ### Custom Commands Create a class in `src/command/` with the `@Command` decorator: ```typescript @Command('my:command', 'Description') export class MyCommand implements ICommand { async handle(ctx: CommandContext) {} } ``` ## Configuration Commands respect configuration in: - `deno.json` - Dependencies and tasks - `drizzle.config.ts` - Database connection - `.env` - Environment variables - `src/kernel.tsx` - App configuration