Initial commit
This commit is contained in:
60
skills/cli-patterns/examples/deploy-cli/README.md
Normal file
60
skills/cli-patterns/examples/deploy-cli/README.md
Normal file
@@ -0,0 +1,60 @@
|
||||
# Deployment CLI Tool Example
|
||||
|
||||
Complete deployment automation CLI demonstrating:
|
||||
- Context management with shared state
|
||||
- Environment validation in Before hook
|
||||
- Command categories (Build, Deploy, Monitor)
|
||||
- Confirmation prompts for destructive actions
|
||||
|
||||
## Usage
|
||||
|
||||
```bash
|
||||
# Set environment variables
|
||||
export DEPLOY_ENV=staging
|
||||
export AWS_REGION=us-west-2
|
||||
|
||||
# Build application
|
||||
deploy --env staging build
|
||||
deploy -e production build --tag v1.2.3
|
||||
|
||||
# Run tests
|
||||
deploy --env staging test
|
||||
|
||||
# Deploy
|
||||
deploy --env staging deploy
|
||||
deploy -e production deploy --auto-approve
|
||||
|
||||
# Rollback
|
||||
deploy --env production rollback
|
||||
|
||||
# Monitor
|
||||
deploy --env production logs --follow
|
||||
deploy -e staging status
|
||||
```
|
||||
|
||||
## Features Demonstrated
|
||||
|
||||
1. **Context Management**: Shared DeployContext across commands
|
||||
2. **Environment Validation**: Before hook validates target environment
|
||||
3. **Required Flags**: --env is required for all operations
|
||||
4. **Confirmation Prompts**: Deploy asks for confirmation (unless --auto-approve)
|
||||
5. **Command Categories**: Build, Deploy, Monitor
|
||||
6. **Environment Variables**: DEPLOY_ENV, AWS_REGION fallbacks
|
||||
7. **Shared State**: Context passed to all commands via metadata
|
||||
|
||||
## Context Pattern
|
||||
|
||||
```go
|
||||
type DeployContext struct {
|
||||
Environment string
|
||||
AWSRegion string
|
||||
Verbose bool
|
||||
}
|
||||
|
||||
// Store in Before hook
|
||||
ctx := &DeployContext{...}
|
||||
c.App.Metadata["ctx"] = ctx
|
||||
|
||||
// Retrieve in command
|
||||
ctx := c.App.Metadata["ctx"].(*DeployContext)
|
||||
```
|
||||
Reference in New Issue
Block a user