CLI Interface
Use Forge's powerful command-line interface for development and deployment
CLI Interface
Forge provides a comprehensive command-line interface that helps you develop, build, and deploy your applications. The CLI uses a hierarchical subcommand structure for better organization and includes commands for project management, code generation, database operations, and more.
Installation
Install the CLI Tool
# Install the latest version
go install github.com/xraph/forge/cmd/forge@latest
# Verify installation
forge versionCLI Commands Overview
# Get help
forge --help
# Get version information
forge version
# Initialize a new project
forge init
# Start development server
forge dev
# Generate code
forge generate app --name=my-app
# Build the application
forge build
# Deploy the application
forge deployCommand Structure
Forge CLI uses a hierarchical subcommand structure for better organization:
forge <command> <subcommand> [flags]Most commands support aliases for faster typing:
forge generate app # Full command
forge gen app # Alias
forge g app # Short aliasCore Commands
Project Management
forge init- Initialize a new Forge projectforge doctor- Check system requirements and project health
Development
forge dev- Start development server and toolsforge dev list- List available appsforge dev build- Build app for development
Code Generation
forge generate(aliases:gen,g) - Generate code from templatesforge generate app- Generate a new applicationforge generate service- Generate a new serviceforge generate extension- Generate a new extensionforge generate controller- Generate a controllerforge generate model- Generate a database model
Database Management
forge db(aliases:database) - Database management toolsforge db migrate- Run database migrationsforge db rollback- Rollback database migrationsforge db status- Show migration statusforge db create- Create a new migrationforge db seed- Seed the databaseforge db reset- Reset the database
Build and Deployment
forge build- Build applicationsforge deploy- Deploy applicationsforge deploy docker- Build and push Docker imageforge deploy k8s- Deploy to Kubernetesforge deploy status- Show deployment status
Extensions
forge extension(aliases:ext) - Extension management toolsforge extension list- List available extensionsforge extension info- Show extension information
Client Tools
forge client- Client generation and management tools
Quick Start Examples
Create a New API
forge init --layout=single-module --template=api
forge gen app -n api-gateway
forge gen ctrl -n users -a api-gateway
forge gen model -n User --fields=name:string,email:string
forge db create -n create_users_table
forge db migrate
forge dev -a api-gatewayMicroservices Development
forge init --layout=multi-module
forge gen app -n api-gateway
forge gen app -n auth-service
forge gen app -n user-service
forge build --production
forge deploy docker -a api-gateway -t v1.0.0
forge deploy k8s -e stagingConfiguration
Forge Configuration File
The .forge.yaml file configures your Forge project:
# .forge.yaml
project:
name: my-project
module: github.com/me/my-project
layout: single-module # or multi-module
structure:
cmd: cmd
apps: apps
pkg: pkg
internal: internal
database:
migrations_path: migrations
seeds_path: seeds
dev:
port: 8080
hot_reload: true
build:
output: bin
target: linux/amd64Environment Variables
# Set environment variables
export DATABASE_URL="postgres://user:pass@localhost/myapp"
export AUTH_SECRET="your-secret-key"
# Use in configuration
forge dev --env developmentAliases Quick Reference
| Full Command | Aliases | Example |
|---|---|---|
generate | gen, g | forge gen app |
database | db | forge db migrate |
extension | ext | forge ext list |
dev list | dev ls | forge dev ls |
db migrate | db up | forge db up |
db rollback | db down | forge db down |
db create | db new | forge db new |
deploy k8s | deploy kubernetes | forge deploy k8s |
extension list | ext ls | forge ext ls |
generate service | gen svc | forge gen svc |
generate extension | gen ext | forge gen ext |
generate controller | gen ctrl, gen handler | forge gen ctrl |
Tips and Best Practices
-
Tab Completion: Most shells support tab completion. Run
forge completion bashorforge completion zshto enable it. -
Help Everywhere: Add
--helpto any command to see detailed usage:forge --help forge generate --help forge generate app --help -
Interactive Mode: Most commands prompt for missing required arguments:
forge gen app # Will prompt for name forge dev # Will show app selector -
Aliases: Use shorter aliases for faster typing:
forge g app -n my-app # Instead of forge generate app forge db up # Instead of forge db migrate forge ext ls # Instead of forge extension list -
Config Search: Run commands from any subdirectory -
.forge.yamlis found automatically.
Troubleshooting
Common Issues
Command not found:
# Check if forge is in PATH
which forge
# Reinstall if needed
go install github.com/xraph/forge/cmd/forge@latestPermission errors:
# Fix permissions
sudo chown -R $(whoami) $GOPATHConfiguration errors:
# Validate configuration
forge doctor
# Check configuration
forge doctor --verboseDebug Mode
# Enable debug mode
forge dev --debug
# Verbose output
forge dev --verbose
# Log level
forge dev --log-level debugFor detailed information about specific command groups, see the individual command pages in the navigation menu.
How is this guide?
Last updated on