Skip to content

Commit afd4eb2

Browse files
Rename forge-cli binary to forge (#83)
* Rename forge-cli binary to forge Rename the CLI binary from `forge-cli` to `forge` for a shorter, more natural command name (`forge servers list` instead of `forge-cli servers list`). The npm package name remains `@studiometa/forge-cli`. Changes: - Update bin field in packages/cli/package.json - Rename all help text, usage strings, and error messages - Rename shell completion functions and file paths - Update tests to match new binary name - Update docs (README, CONTRIBUTING, CLAUDE, CHANGELOG) Closes #82 Co-authored-by: Claude <claude@anthropic.com> * Fix package name references in docs Restore forge-cli package name in architecture diagrams and changelog entries that were incorrectly replaced with the binary name. Co-authored-by: Claude <claude@anthropic.com> --------- Co-authored-by: Claude <claude@anthropic.com>
1 parent 266782f commit afd4eb2

56 files changed

Lines changed: 537 additions & 565 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ forge-cli → forge-core # CLI tool (human + AI agent use)
5050
- **forge-sdk** (`packages/sdk`): `Forge` class with fluent chainable API (`forge.servers(123).sites(456).deploy()`). Thin wrapper over forge-api — delegates all HTTP. JSDoc on every public method. The hero package with standalone README.
5151
- **forge-core** (`packages/core`): Pure executor functions `(options, context) → ExecutorResult<T>`, `ExecutorContext` with DI, centralized constants (`RESOURCES`, `ACTIONS`). Includes `matchByName` helper for auto-resolving resource names to numeric IDs. Same pattern as productive-core.
5252
- **forge-mcp** (`packages/mcp`): Two MCP tools — `forge` (read-only: `list`, `get`, `resolve`, `context`, `help`, `schema`) and `forge_write` (destructive: `create`, `update`, `delete`, `deploy`, `reboot`, `restart`, `activate`, `run`) with `resource` + `action` routing, `createResourceHandler()` factory, stdio and HTTP transports. Supports `batch` resource for multi-action calls. Auto-resolve middleware translates name strings to numeric IDs before dispatching.
53-
- **forge-cli** (`packages/cli`): CLI tool for managing Forge servers, sites, and more. Human-friendly output by default, `--format json` for scripting and AI agent use.
53+
- **forge-cli** (`packages/cli`): CLI tool for managing Forge servers, sites, and more. Binary is `forge`. Human-friendly output by default, `--format json` for scripting and AI agent use.
5454

5555
### Key Design Principles
5656

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,19 @@ npm install -g @studiometa/forge-cli
2727

2828
```bash
2929
# Save your API token
30-
forge-cli config set YOUR_FORGE_TOKEN
30+
forge config set YOUR_FORGE_TOKEN
3131

3232
# List all servers
33-
forge-cli servers list
33+
forge servers list
3434

3535
# List sites on a server
36-
forge-cli sites list --server 123
36+
forge sites list --server 123
3737

3838
# Deploy a site
39-
forge-cli deployments deploy --server 123 --site 456
39+
forge deployments deploy --server 123 --site 456
4040

4141
# Get JSON output (for scripting and AI agents)
42-
forge-cli servers list --format json
42+
forge servers list --format json
4343
```
4444

4545
### SDK

packages/cli/README.md

Lines changed: 47 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ Credentials can be provided in three ways (highest priority first):
2323
3. **Config file** (XDG-compliant):
2424

2525
```bash
26-
forge-cli config set YOUR_FORGE_TOKEN
27-
forge-cli config get
28-
forge-cli config delete
26+
forge config set YOUR_FORGE_TOKEN
27+
forge config get
28+
forge config delete
2929
```
3030

3131
| Platform | Config path |
@@ -37,7 +37,7 @@ forge-cli config delete
3737
## Commands
3838

3939
```
40-
forge-cli <command> [subcommand] [options]
40+
forge <command> [subcommand] [options]
4141
```
4242

4343
| Command | Alias | Description |
@@ -65,25 +65,25 @@ forge-cli <command> [subcommand] [options]
6565
| `user` | | Get the authenticated user's profile |
6666
| `completion` | | Install shell completion (bash, zsh, fish) |
6767

68-
Run `forge-cli <command> --help` for detailed usage of each command.
68+
Run `forge <command> --help` for detailed usage of each command.
6969

7070
## Quick Start
7171

7272
```bash
7373
# Save your API token
74-
forge-cli config set YOUR_FORGE_TOKEN
74+
forge config set YOUR_FORGE_TOKEN
7575

7676
# List all servers
77-
forge-cli servers list
77+
forge servers list
7878

7979
# List sites on a server
80-
forge-cli sites list --server 123
80+
forge sites list --server 123
8181

8282
# Deploy a site
83-
forge-cli deployments deploy --server 123 --site 456
83+
forge deployments deploy --server 123 --site 456
8484

8585
# Get environment variables
86-
forge-cli env get --server 123 --site 456
86+
forge env get --server 123 --site 456
8787
```
8888

8989
## Output Formats
@@ -97,110 +97,110 @@ All list/get commands support `--format`:
9797
| Table | `--format table` | ASCII table |
9898

9999
```bash
100-
forge-cli servers list --format json
101-
forge-cli sites list --server 123 --format table
100+
forge servers list --format json
101+
forge sites list --server 123 --format table
102102
```
103103

104104
## Command Reference
105105

106106
### `config` — Manage configuration
107107

108108
```bash
109-
forge-cli config set <token> # Save API token to config file
110-
forge-cli config get # Show current token (masked)
111-
forge-cli config delete # Delete stored token
109+
forge config set <token> # Save API token to config file
110+
forge config get # Show current token (masked)
111+
forge config delete # Delete stored token
112112
```
113113

114114
### `servers` (`s`) — Manage servers
115115

116116
```bash
117-
forge-cli servers list # List all servers
118-
forge-cli servers get <id> # Get server details
119-
forge-cli servers reboot <id> # Reboot a server
117+
forge servers list # List all servers
118+
forge servers get <id> # Get server details
119+
forge servers reboot <id> # Reboot a server
120120
```
121121

122122
### `sites` — Manage sites
123123

124124
```bash
125-
forge-cli sites list --server <id> # List sites on a server
126-
forge-cli sites get <site_id> --server <id> # Get site details
125+
forge sites list --server <id> # List sites on a server
126+
forge sites get <site_id> --server <id> # Get site details
127127
```
128128

129129
### `deployments` (`d`) — Manage deployments
130130

131131
```bash
132-
forge-cli deployments list --server <id> --site <id> # List deployments
133-
forge-cli deployments deploy --server <id> --site <id> # Trigger a deployment
132+
forge deployments list --server <id> --site <id> # List deployments
133+
forge deployments deploy --server <id> --site <id> # Trigger a deployment
134134
```
135135

136136
The `deploy` command waits for deployment to complete, showing live progress. On completion it prints the deployment log and elapsed time.
137137

138138
### `databases` (`db`) — Manage databases
139139

140140
```bash
141-
forge-cli databases list --server <id> # List databases
142-
forge-cli databases get <db_id> --server <id> # Get database details
141+
forge databases list --server <id> # List databases
142+
forge databases get <db_id> --server <id> # Get database details
143143
```
144144

145145
### `daemons` — Manage background processes
146146

147147
```bash
148-
forge-cli daemons list --server <id> # List daemons
149-
forge-cli daemons get <daemon_id> --server <id> # Get daemon details
150-
forge-cli daemons restart <daemon_id> --server <id> # Restart a daemon
148+
forge daemons list --server <id> # List daemons
149+
forge daemons get <daemon_id> --server <id> # Get daemon details
150+
forge daemons restart <daemon_id> --server <id> # Restart a daemon
151151
```
152152

153153
### `env` — Manage environment variables
154154

155155
```bash
156-
forge-cli env get --server <id> --site <id> # Get .env content
157-
forge-cli env update --server <id> --site <id> --content "KEY=value" # Update .env
156+
forge env get --server <id> --site <id> # Get .env content
157+
forge env update --server <id> --site <id> --content "KEY=value" # Update .env
158158
```
159159

160160
### `nginx` — Manage Nginx configuration
161161

162162
```bash
163-
forge-cli nginx get --server <id> --site <id> # Get Nginx config
164-
forge-cli nginx update --server <id> --site <id> --content "server { ... }" # Update Nginx config
163+
forge nginx get --server <id> --site <id> # Get Nginx config
164+
forge nginx update --server <id> --site <id> --content "server { ... }" # Update Nginx config
165165
```
166166

167167
### `certificates` (`certs`) — Manage SSL certificates
168168

169169
```bash
170-
forge-cli certificates list --server <id> --site <id> # List certificates
171-
forge-cli certificates get <cert_id> --server <id> --site <id> # Get certificate details
172-
forge-cli certificates activate <cert_id> --server <id> --site <id> # Activate a certificate
170+
forge certificates list --server <id> --site <id> # List certificates
171+
forge certificates get <cert_id> --server <id> --site <id> # Get certificate details
172+
forge certificates activate <cert_id> --server <id> --site <id> # Activate a certificate
173173
```
174174

175175
### `firewall-rules` (`fw`) — Manage firewall rules
176176

177177
```bash
178-
forge-cli firewall-rules list --server <id> # List firewall rules
179-
forge-cli firewall-rules get <rule_id> --server <id> # Get rule details
178+
forge firewall-rules list --server <id> # List firewall rules
179+
forge firewall-rules get <rule_id> --server <id> # Get rule details
180180
```
181181

182182
### `ssh-keys` — Manage SSH keys
183183

184184
```bash
185-
forge-cli ssh-keys list --server <id> # List SSH keys
186-
forge-cli ssh-keys get <key_id> --server <id> # Get SSH key details
185+
forge ssh-keys list --server <id> # List SSH keys
186+
forge ssh-keys get <key_id> --server <id> # Get SSH key details
187187
```
188188

189189
### `recipes` — Manage recipes
190190

191191
```bash
192-
forge-cli recipes list # List all recipes
193-
forge-cli recipes get <id> # Get recipe details
194-
forge-cli recipes run <id> --servers 123,456 # Run recipe on servers
192+
forge recipes list # List all recipes
193+
forge recipes get <id> # Get recipe details
194+
forge recipes run <id> --servers 123,456 # Run recipe on servers
195195
```
196196

197197
### `completion` — Shell completion
198198

199199
```bash
200-
forge-cli completion bash # Install Bash completion
201-
forge-cli completion zsh # Install Zsh completion
202-
forge-cli completion fish # Install Fish completion
203-
forge-cli completion bash --print # Print script without installing
200+
forge completion bash # Install Bash completion
201+
forge completion zsh # Install Zsh completion
202+
forge completion fish # Install Fish completion
203+
forge completion bash --print # Print script without installing
204204
```
205205

206206
## Audit Logging
@@ -229,10 +229,10 @@ The CLI is designed for programmatic use by AI agents:
229229

230230
```bash
231231
# Get all servers as JSON
232-
forge-cli servers list --format json
232+
forge servers list --format json
233233

234234
# Deploy and capture output
235-
forge-cli deployments deploy --server 123 --site 456 --format json
235+
forge deployments deploy --server 123 --site 456 --format json
236236
```
237237

238238
## Requirements

packages/cli/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"directory": "packages/cli"
2020
},
2121
"bin": {
22-
"forge-cli": "./dist/cli.js"
22+
"forge": "./dist/cli.js"
2323
},
2424
"files": [
2525
"dist"

packages/cli/src/cli.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@ const VERSION = __VERSION__;
4848

4949
function showHelp(): void {
5050
console.log(`
51-
${colors.bold("forge-cli")} v${VERSION}
51+
${colors.bold("forge")} v${VERSION}
5252
5353
${colors.bold("USAGE:")}
54-
forge-cli <command> [subcommand] [options]
54+
forge <command> [subcommand] [options]
5555
5656
${colors.bold("COMMANDS:")}
5757
config Manage CLI configuration
@@ -174,22 +174,22 @@ ${colors.bold("OPTIONS:")}
174174
175175
${colors.bold("EXAMPLES:")}
176176
# Configure API token
177-
forge-cli config set YOUR_TOKEN
177+
forge config set YOUR_TOKEN
178178
179179
# Or pass token directly
180-
forge-cli servers list --token YOUR_TOKEN
180+
forge servers list --token YOUR_TOKEN
181181
182182
# List all servers
183-
forge-cli servers list
183+
forge servers list
184184
185185
# List sites on a server
186-
forge-cli sites list --server 123
186+
forge sites list --server 123
187187
188188
# Deploy a site
189-
forge-cli deployments deploy --server 123 --site 456
189+
forge deployments deploy --server 123 --site 456
190190
191191
# Get JSON output (for AI agents)
192-
forge-cli servers list --format json
192+
forge servers list --format json
193193
194194
${colors.bold("CREDENTIAL PRIORITY:")}
195195
1. CLI argument (--token)
@@ -497,7 +497,7 @@ async function main(): Promise<void> {
497497

498498
default:
499499
console.error(colors.red(`Unknown command: ${mainCommand}`));
500-
console.log(`Run ${colors.cyan("forge-cli --help")} for usage information`);
500+
console.log(`Run ${colors.cyan("forge --help")} for usage information`);
501501
process.exit(1);
502502
}
503503
} catch (error) {

packages/cli/src/commands/backups/handlers.ts

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,7 @@ export async function backupsList(ctx: CommandContext): Promise<void> {
1414
const server = String(ctx.options.server ?? "");
1515

1616
if (!server) {
17-
exitWithValidationError(
18-
"server_id",
19-
"forge-cli backups list --server <server_id>",
20-
ctx.formatter,
21-
);
17+
exitWithValidationError("server_id", "forge backups list --server <server_id>", ctx.formatter);
2218
}
2319

2420
await runCommand(async () => {
@@ -43,15 +39,15 @@ export async function backupsGet(args: string[], ctx: CommandContext): Promise<v
4339
if (!id) {
4440
exitWithValidationError(
4541
"backup_id",
46-
"forge-cli backups get <backup_id> --server <server_id>",
42+
"forge backups get <backup_id> --server <server_id>",
4743
ctx.formatter,
4844
);
4945
}
5046

5147
if (!server) {
5248
exitWithValidationError(
5349
"server_id",
54-
"forge-cli backups get <backup_id> --server <server_id>",
50+
"forge backups get <backup_id> --server <server_id>",
5551
ctx.formatter,
5652
);
5753
}
@@ -87,23 +83,23 @@ export async function backupsCreate(ctx: CommandContext): Promise<void> {
8783
if (!server) {
8884
exitWithValidationError(
8985
"server_id",
90-
"forge-cli backups create --server <server_id> --provider <provider> --frequency <frequency>",
86+
"forge backups create --server <server_id> --provider <provider> --frequency <frequency>",
9187
ctx.formatter,
9288
);
9389
}
9490

9591
if (!provider) {
9692
exitWithValidationError(
9793
"provider",
98-
"forge-cli backups create --server <server_id> --provider <provider> --frequency <frequency>",
94+
"forge backups create --server <server_id> --provider <provider> --frequency <frequency>",
9995
ctx.formatter,
10096
);
10197
}
10298

10399
if (!frequency) {
104100
exitWithValidationError(
105101
"frequency",
106-
"forge-cli backups create --server <server_id> --provider <provider> --frequency <frequency>",
102+
"forge backups create --server <server_id> --provider <provider> --frequency <frequency>",
107103
ctx.formatter,
108104
);
109105
}
@@ -134,15 +130,15 @@ export async function backupsDelete(args: string[], ctx: CommandContext): Promis
134130
if (!id) {
135131
exitWithValidationError(
136132
"backup_id",
137-
"forge-cli backups delete <backup_id> --server <server_id>",
133+
"forge backups delete <backup_id> --server <server_id>",
138134
ctx.formatter,
139135
);
140136
}
141137

142138
if (!server) {
143139
exitWithValidationError(
144140
"server_id",
145-
"forge-cli backups delete <backup_id> --server <server_id>",
141+
"forge backups delete <backup_id> --server <server_id>",
146142
ctx.formatter,
147143
);
148144
}

0 commit comments

Comments
 (0)