**Table of Contents**
- [Example: CLI subcommand](#example-cli-subcommand)
- [Using Marketplace Gpack (Recommended)](#using-marketplace-gpack-recommended)
- [1. Search and Install](#1-search-and-install)
- [2. Generate Code](#2-generate-code)
- [3. Verify Output](#3-verify-output)
- [Using Local Template (Advanced)](#using-local-template-advanced)
- [Comparison](#comparison)
- [Next Steps](#next-steps)
# Example: CLI subcommand
## Using Marketplace Gpack (Recommended)
### 1. Search and Install
```bash
# Search for CLI subcommand gpacks
ggen search rust cli
# Install the gpack
ggen add io.ggen.rust.cli-subcommand
```
### 2. Generate Code
```bash
# Generate using the gpack template
ggen gen io.ggen.rust.cli-subcommand:cli/subcommand/rust.tmpl name=status description="Show application status"
```
### 3. Verify Output
```bash
# Check generated file
cat src/cmds/status.rs
```
Output:
```rust
// Generated by gpack: io.ggen.rust.cli-subcommand
// Template: cli/subcommand/rust.tmpl
use clap::Parser;
#[derive(Parser)]
pub struct StatusArgs {
/// Show application status
#[arg(short, long)]
pub verbose: bool,
}
pub fn status(args: StatusArgs) -> Result<(), Box<dyn std::error::Error>> {
println!("Application status: Running");
if args.verbose {
println!("Detailed status information...");
}
Ok(())
}
```
## Using Local Template (Advanced)
Create `templates/cli/subcommand/rust.tmpl` (see quickstart for full template).
Generate:
```bash
ggen gen cli subcommand --vars cmd=status summary="Show status"
```
Outputs:
```
src/cmds/status.rs
```
## Comparison
| **Marketplace** | Instant | Community tested | Automatic | Most users |
| **Local** | Manual | Custom | Manual | Special needs |
## Next Steps
- Try the [multi-language example](cli-subcommand-multi.md)
- Explore [marketplace gpacks](marketplace.md)
- Learn about [template development](templates.md)