@studiometa/forge-cli 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/README.md +236 -0
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +2746 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands/backups/command.d.ts +2 -0
  7. package/dist/commands/backups/command.d.ts.map +1 -0
  8. package/dist/commands/backups/handlers.d.ts +6 -0
  9. package/dist/commands/backups/handlers.d.ts.map +1 -0
  10. package/dist/commands/backups/help.d.ts +2 -0
  11. package/dist/commands/backups/help.d.ts.map +1 -0
  12. package/dist/commands/backups/index.d.ts +3 -0
  13. package/dist/commands/backups/index.d.ts.map +1 -0
  14. package/dist/commands/certificates/command.d.ts +2 -0
  15. package/dist/commands/certificates/command.d.ts.map +1 -0
  16. package/dist/commands/certificates/handlers.d.ts +5 -0
  17. package/dist/commands/certificates/handlers.d.ts.map +1 -0
  18. package/dist/commands/certificates/help.d.ts +2 -0
  19. package/dist/commands/certificates/help.d.ts.map +1 -0
  20. package/dist/commands/certificates/index.d.ts +3 -0
  21. package/dist/commands/certificates/index.d.ts.map +1 -0
  22. package/dist/commands/commands/command.d.ts +2 -0
  23. package/dist/commands/commands/command.d.ts.map +1 -0
  24. package/dist/commands/commands/handlers.d.ts +5 -0
  25. package/dist/commands/commands/handlers.d.ts.map +1 -0
  26. package/dist/commands/commands/help.d.ts +2 -0
  27. package/dist/commands/commands/help.d.ts.map +1 -0
  28. package/dist/commands/commands/index.d.ts +3 -0
  29. package/dist/commands/commands/index.d.ts.map +1 -0
  30. package/dist/commands/config.d.ts +6 -0
  31. package/dist/commands/config.d.ts.map +1 -0
  32. package/dist/commands/daemons/command.d.ts +2 -0
  33. package/dist/commands/daemons/command.d.ts.map +1 -0
  34. package/dist/commands/daemons/handlers.d.ts +5 -0
  35. package/dist/commands/daemons/handlers.d.ts.map +1 -0
  36. package/dist/commands/daemons/help.d.ts +2 -0
  37. package/dist/commands/daemons/help.d.ts.map +1 -0
  38. package/dist/commands/daemons/index.d.ts +3 -0
  39. package/dist/commands/daemons/index.d.ts.map +1 -0
  40. package/dist/commands/database-users/command.d.ts +2 -0
  41. package/dist/commands/database-users/command.d.ts.map +1 -0
  42. package/dist/commands/database-users/handlers.d.ts +6 -0
  43. package/dist/commands/database-users/handlers.d.ts.map +1 -0
  44. package/dist/commands/database-users/help.d.ts +2 -0
  45. package/dist/commands/database-users/help.d.ts.map +1 -0
  46. package/dist/commands/database-users/index.d.ts +3 -0
  47. package/dist/commands/database-users/index.d.ts.map +1 -0
  48. package/dist/commands/databases/command.d.ts +2 -0
  49. package/dist/commands/databases/command.d.ts.map +1 -0
  50. package/dist/commands/databases/handlers.d.ts +4 -0
  51. package/dist/commands/databases/handlers.d.ts.map +1 -0
  52. package/dist/commands/databases/help.d.ts +2 -0
  53. package/dist/commands/databases/help.d.ts.map +1 -0
  54. package/dist/commands/databases/index.d.ts +3 -0
  55. package/dist/commands/databases/index.d.ts.map +1 -0
  56. package/dist/commands/deployments/command.d.ts +2 -0
  57. package/dist/commands/deployments/command.d.ts.map +1 -0
  58. package/dist/commands/deployments/handlers.d.ts +4 -0
  59. package/dist/commands/deployments/handlers.d.ts.map +1 -0
  60. package/dist/commands/deployments/help.d.ts +2 -0
  61. package/dist/commands/deployments/help.d.ts.map +1 -0
  62. package/dist/commands/deployments/index.d.ts +3 -0
  63. package/dist/commands/deployments/index.d.ts.map +1 -0
  64. package/dist/commands/env/command.d.ts +2 -0
  65. package/dist/commands/env/command.d.ts.map +1 -0
  66. package/dist/commands/env/handlers.d.ts +4 -0
  67. package/dist/commands/env/handlers.d.ts.map +1 -0
  68. package/dist/commands/env/help.d.ts +2 -0
  69. package/dist/commands/env/help.d.ts.map +1 -0
  70. package/dist/commands/env/index.d.ts +3 -0
  71. package/dist/commands/env/index.d.ts.map +1 -0
  72. package/dist/commands/firewall-rules/command.d.ts +2 -0
  73. package/dist/commands/firewall-rules/command.d.ts.map +1 -0
  74. package/dist/commands/firewall-rules/handlers.d.ts +4 -0
  75. package/dist/commands/firewall-rules/handlers.d.ts.map +1 -0
  76. package/dist/commands/firewall-rules/help.d.ts +2 -0
  77. package/dist/commands/firewall-rules/help.d.ts.map +1 -0
  78. package/dist/commands/firewall-rules/index.d.ts +3 -0
  79. package/dist/commands/firewall-rules/index.d.ts.map +1 -0
  80. package/dist/commands/monitors/command.d.ts +2 -0
  81. package/dist/commands/monitors/command.d.ts.map +1 -0
  82. package/dist/commands/monitors/handlers.d.ts +6 -0
  83. package/dist/commands/monitors/handlers.d.ts.map +1 -0
  84. package/dist/commands/monitors/help.d.ts +2 -0
  85. package/dist/commands/monitors/help.d.ts.map +1 -0
  86. package/dist/commands/monitors/index.d.ts +3 -0
  87. package/dist/commands/monitors/index.d.ts.map +1 -0
  88. package/dist/commands/nginx/command.d.ts +2 -0
  89. package/dist/commands/nginx/command.d.ts.map +1 -0
  90. package/dist/commands/nginx/handlers.d.ts +4 -0
  91. package/dist/commands/nginx/handlers.d.ts.map +1 -0
  92. package/dist/commands/nginx/help.d.ts +2 -0
  93. package/dist/commands/nginx/help.d.ts.map +1 -0
  94. package/dist/commands/nginx/index.d.ts +3 -0
  95. package/dist/commands/nginx/index.d.ts.map +1 -0
  96. package/dist/commands/nginx-templates/command.d.ts +2 -0
  97. package/dist/commands/nginx-templates/command.d.ts.map +1 -0
  98. package/dist/commands/nginx-templates/handlers.d.ts +7 -0
  99. package/dist/commands/nginx-templates/handlers.d.ts.map +1 -0
  100. package/dist/commands/nginx-templates/help.d.ts +2 -0
  101. package/dist/commands/nginx-templates/help.d.ts.map +1 -0
  102. package/dist/commands/nginx-templates/index.d.ts +3 -0
  103. package/dist/commands/nginx-templates/index.d.ts.map +1 -0
  104. package/dist/commands/recipes/command.d.ts +2 -0
  105. package/dist/commands/recipes/command.d.ts.map +1 -0
  106. package/dist/commands/recipes/handlers.d.ts +5 -0
  107. package/dist/commands/recipes/handlers.d.ts.map +1 -0
  108. package/dist/commands/recipes/help.d.ts +2 -0
  109. package/dist/commands/recipes/help.d.ts.map +1 -0
  110. package/dist/commands/recipes/index.d.ts +3 -0
  111. package/dist/commands/recipes/index.d.ts.map +1 -0
  112. package/dist/commands/redirect-rules/command.d.ts +2 -0
  113. package/dist/commands/redirect-rules/command.d.ts.map +1 -0
  114. package/dist/commands/redirect-rules/handlers.d.ts +6 -0
  115. package/dist/commands/redirect-rules/handlers.d.ts.map +1 -0
  116. package/dist/commands/redirect-rules/help.d.ts +2 -0
  117. package/dist/commands/redirect-rules/help.d.ts.map +1 -0
  118. package/dist/commands/redirect-rules/index.d.ts +3 -0
  119. package/dist/commands/redirect-rules/index.d.ts.map +1 -0
  120. package/dist/commands/scheduled-jobs/command.d.ts +2 -0
  121. package/dist/commands/scheduled-jobs/command.d.ts.map +1 -0
  122. package/dist/commands/scheduled-jobs/handlers.d.ts +6 -0
  123. package/dist/commands/scheduled-jobs/handlers.d.ts.map +1 -0
  124. package/dist/commands/scheduled-jobs/help.d.ts +2 -0
  125. package/dist/commands/scheduled-jobs/help.d.ts.map +1 -0
  126. package/dist/commands/scheduled-jobs/index.d.ts +3 -0
  127. package/dist/commands/scheduled-jobs/index.d.ts.map +1 -0
  128. package/dist/commands/security-rules/command.d.ts +2 -0
  129. package/dist/commands/security-rules/command.d.ts.map +1 -0
  130. package/dist/commands/security-rules/handlers.d.ts +6 -0
  131. package/dist/commands/security-rules/handlers.d.ts.map +1 -0
  132. package/dist/commands/security-rules/help.d.ts +2 -0
  133. package/dist/commands/security-rules/help.d.ts.map +1 -0
  134. package/dist/commands/security-rules/index.d.ts +3 -0
  135. package/dist/commands/security-rules/index.d.ts.map +1 -0
  136. package/dist/commands/servers/command.d.ts +2 -0
  137. package/dist/commands/servers/command.d.ts.map +1 -0
  138. package/dist/commands/servers/handlers.d.ts +18 -0
  139. package/dist/commands/servers/handlers.d.ts.map +1 -0
  140. package/dist/commands/servers/help.d.ts +2 -0
  141. package/dist/commands/servers/help.d.ts.map +1 -0
  142. package/dist/commands/servers/index.d.ts +3 -0
  143. package/dist/commands/servers/index.d.ts.map +1 -0
  144. package/dist/commands/sites/command.d.ts +2 -0
  145. package/dist/commands/sites/command.d.ts.map +1 -0
  146. package/dist/commands/sites/handlers.d.ts +4 -0
  147. package/dist/commands/sites/handlers.d.ts.map +1 -0
  148. package/dist/commands/sites/help.d.ts +2 -0
  149. package/dist/commands/sites/help.d.ts.map +1 -0
  150. package/dist/commands/sites/index.d.ts +3 -0
  151. package/dist/commands/sites/index.d.ts.map +1 -0
  152. package/dist/commands/ssh-keys/command.d.ts +2 -0
  153. package/dist/commands/ssh-keys/command.d.ts.map +1 -0
  154. package/dist/commands/ssh-keys/handlers.d.ts +4 -0
  155. package/dist/commands/ssh-keys/handlers.d.ts.map +1 -0
  156. package/dist/commands/ssh-keys/help.d.ts +2 -0
  157. package/dist/commands/ssh-keys/help.d.ts.map +1 -0
  158. package/dist/commands/ssh-keys/index.d.ts +3 -0
  159. package/dist/commands/ssh-keys/index.d.ts.map +1 -0
  160. package/dist/commands/user/command.d.ts +2 -0
  161. package/dist/commands/user/command.d.ts.map +1 -0
  162. package/dist/commands/user/handlers.d.ts +3 -0
  163. package/dist/commands/user/handlers.d.ts.map +1 -0
  164. package/dist/commands/user/help.d.ts +2 -0
  165. package/dist/commands/user/help.d.ts.map +1 -0
  166. package/dist/commands/user/index.d.ts +3 -0
  167. package/dist/commands/user/index.d.ts.map +1 -0
  168. package/dist/config.d.ts +18 -0
  169. package/dist/config.d.ts.map +1 -0
  170. package/dist/context.d.ts +50 -0
  171. package/dist/context.d.ts.map +1 -0
  172. package/dist/error-handler-BahHMt6t.js +396 -0
  173. package/dist/error-handler-BahHMt6t.js.map +1 -0
  174. package/dist/error-handler.d.ts +39 -0
  175. package/dist/error-handler.d.ts.map +1 -0
  176. package/dist/errors.d.ts +45 -0
  177. package/dist/errors.d.ts.map +1 -0
  178. package/dist/index.d.ts +8 -0
  179. package/dist/index.d.ts.map +1 -0
  180. package/dist/index.js +2 -0
  181. package/dist/output.d.ts +47 -0
  182. package/dist/output.d.ts.map +1 -0
  183. package/dist/types.d.ts +7 -0
  184. package/dist/types.d.ts.map +1 -0
  185. package/dist/utils/args.d.ts +14 -0
  186. package/dist/utils/args.d.ts.map +1 -0
  187. package/dist/utils/colors.d.ts +17 -0
  188. package/dist/utils/colors.d.ts.map +1 -0
  189. package/dist/utils/command-router.d.ts +47 -0
  190. package/dist/utils/command-router.d.ts.map +1 -0
  191. package/dist/utils/resolve.d.ts +25 -0
  192. package/dist/utils/resolve.d.ts.map +1 -0
  193. package/package.json +41 -1
package/README.md ADDED
@@ -0,0 +1,236 @@
1
+ # @studiometa/forge-cli
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@studiometa/forge-cli?style=flat&colorB=3e63dd&colorA=414853)](https://www.npmjs.com/package/@studiometa/forge-cli)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat&colorB=3e63dd&colorA=414853)](https://opensource.org/licenses/MIT)
5
+
6
+ CLI tool for managing Laravel Forge servers, sites, and deployments. Optimized for both AI agents and human users.
7
+
8
+ ## Installation
9
+
10
+ ```bash
11
+ npm install -g @studiometa/forge-cli
12
+
13
+ # Or use directly with npx
14
+ npx @studiometa/forge-cli --help
15
+ ```
16
+
17
+ ## Configuration
18
+
19
+ Credentials can be provided in three ways (highest priority first):
20
+
21
+ 1. **CLI argument**: `--token <token>`
22
+ 2. **Environment variable**: `FORGE_API_TOKEN`
23
+ 3. **Config file** (XDG-compliant):
24
+
25
+ ```bash
26
+ forge-cli config set YOUR_FORGE_TOKEN
27
+ forge-cli config get
28
+ forge-cli config delete
29
+ ```
30
+
31
+ | Platform | Config path |
32
+ | -------- | ------------------------------------------------------- |
33
+ | Linux | `~/.config/forge-tools/config.json` |
34
+ | macOS | `~/Library/Application Support/forge-tools/config.json` |
35
+ | Windows | `%APPDATA%/forge-tools/config.json` |
36
+
37
+ ## Commands
38
+
39
+ ```
40
+ forge-cli <command> [subcommand] [options]
41
+ ```
42
+
43
+ | Command | Alias | Description |
44
+ | ----------------- | ------- | ---------------------------------------------------- |
45
+ | `config` | | Manage CLI configuration (`set`, `get`, `delete`) |
46
+ | `servers` | `s` | List, get, reboot servers |
47
+ | `sites` | | List, get sites on a server |
48
+ | `deployments` | `d` | List deployments, trigger deploys |
49
+ | `databases` | `db` | List, get databases on a server |
50
+ | `database-users` | | List, get, create, delete database users on a server |
51
+ | `daemons` | | List, get, restart daemons on a server |
52
+ | `backups` | | List, get, create, delete backup configs on a server |
53
+ | `commands` | | List, get, create commands on a server |
54
+ | `scheduled-jobs` | | List, get, create, delete scheduled jobs on a server |
55
+ | `monitors` | | List, get, create, delete monitors on a server |
56
+ | `env` | | Get, update environment variables for a site |
57
+ | `nginx` | | Get, update Nginx configuration for a site |
58
+ | `nginx-templates` | | List, get, create, update, delete Nginx templates |
59
+ | `certificates` | `certs` | List, get, activate SSL certificates for a site |
60
+ | `firewall-rules` | `fw` | List, get firewall rules on a server |
61
+ | `ssh-keys` | | List, get SSH keys on a server |
62
+ | `security-rules` | | List, get, create, delete security rules for a site |
63
+ | `redirect-rules` | | List, get, create, delete redirect rules for a site |
64
+ | `recipes` | | List, get, run recipes |
65
+ | `user` | | Get the authenticated user's profile |
66
+
67
+ Run `forge-cli <command> --help` for detailed usage of each command.
68
+
69
+ ## Quick Start
70
+
71
+ ```bash
72
+ # Save your API token
73
+ forge-cli config set YOUR_FORGE_TOKEN
74
+
75
+ # List all servers
76
+ forge-cli servers list
77
+
78
+ # List sites on a server
79
+ forge-cli sites list --server 123
80
+
81
+ # Deploy a site
82
+ forge-cli deployments deploy --server 123 --site 456
83
+
84
+ # Get environment variables
85
+ forge-cli env get --server 123 --site 456
86
+ ```
87
+
88
+ ## Output Formats
89
+
90
+ All list/get commands support `--format`:
91
+
92
+ | Format | Flag | Description |
93
+ | ------ | ---------------- | ------------------------------------ |
94
+ | Human | `--format human` | Colored, readable output (default) |
95
+ | JSON | `--format json` | Structured JSON for programmatic use |
96
+ | Table | `--format table` | ASCII table |
97
+
98
+ ```bash
99
+ forge-cli servers list --format json
100
+ forge-cli sites list --server 123 --format table
101
+ ```
102
+
103
+ ## Command Reference
104
+
105
+ ### `config` — Manage configuration
106
+
107
+ ```bash
108
+ forge-cli config set <token> # Save API token to config file
109
+ forge-cli config get # Show current token (masked)
110
+ forge-cli config delete # Delete stored token
111
+ ```
112
+
113
+ ### `servers` (`s`) — Manage servers
114
+
115
+ ```bash
116
+ forge-cli servers list # List all servers
117
+ forge-cli servers get <id> # Get server details
118
+ forge-cli servers reboot <id> # Reboot a server
119
+ ```
120
+
121
+ ### `sites` — Manage sites
122
+
123
+ ```bash
124
+ forge-cli sites list --server <id> # List sites on a server
125
+ forge-cli sites get <site_id> --server <id> # Get site details
126
+ ```
127
+
128
+ ### `deployments` (`d`) — Manage deployments
129
+
130
+ ```bash
131
+ forge-cli deployments list --server <id> --site <id> # List deployments
132
+ forge-cli deployments deploy --server <id> --site <id> # Trigger a deployment
133
+ ```
134
+
135
+ ### `databases` (`db`) — Manage databases
136
+
137
+ ```bash
138
+ forge-cli databases list --server <id> # List databases
139
+ forge-cli databases get <db_id> --server <id> # Get database details
140
+ ```
141
+
142
+ ### `daemons` — Manage background processes
143
+
144
+ ```bash
145
+ forge-cli daemons list --server <id> # List daemons
146
+ forge-cli daemons get <daemon_id> --server <id> # Get daemon details
147
+ forge-cli daemons restart <daemon_id> --server <id> # Restart a daemon
148
+ ```
149
+
150
+ ### `env` — Manage environment variables
151
+
152
+ ```bash
153
+ forge-cli env get --server <id> --site <id> # Get .env content
154
+ forge-cli env update --server <id> --site <id> --content "KEY=value" # Update .env
155
+ ```
156
+
157
+ ### `nginx` — Manage Nginx configuration
158
+
159
+ ```bash
160
+ forge-cli nginx get --server <id> --site <id> # Get Nginx config
161
+ forge-cli nginx update --server <id> --site <id> --content "server { ... }" # Update Nginx config
162
+ ```
163
+
164
+ ### `certificates` (`certs`) — Manage SSL certificates
165
+
166
+ ```bash
167
+ forge-cli certificates list --server <id> --site <id> # List certificates
168
+ forge-cli certificates get <cert_id> --server <id> --site <id> # Get certificate details
169
+ forge-cli certificates activate <cert_id> --server <id> --site <id> # Activate a certificate
170
+ ```
171
+
172
+ ### `firewall-rules` (`fw`) — Manage firewall rules
173
+
174
+ ```bash
175
+ forge-cli firewall-rules list --server <id> # List firewall rules
176
+ forge-cli firewall-rules get <rule_id> --server <id> # Get rule details
177
+ ```
178
+
179
+ ### `ssh-keys` — Manage SSH keys
180
+
181
+ ```bash
182
+ forge-cli ssh-keys list --server <id> # List SSH keys
183
+ forge-cli ssh-keys get <key_id> --server <id> # Get SSH key details
184
+ ```
185
+
186
+ ### `recipes` — Manage recipes
187
+
188
+ ```bash
189
+ forge-cli recipes list # List all recipes
190
+ forge-cli recipes get <id> # Get recipe details
191
+ forge-cli recipes run <id> --servers 123,456 # Run recipe on servers
192
+ ```
193
+
194
+ ## Global Options
195
+
196
+ | Option | Alias | Description |
197
+ | ----------------- | ----- | ----------------------------------------------- |
198
+ | `--token <token>` | | Forge API token (overrides config and env) |
199
+ | `--server <id>` | | Server ID (required for server-scoped commands) |
200
+ | `--site <id>` | | Site ID (required for site-scoped commands) |
201
+ | `--format <fmt>` | `-f` | Output format: `json`, `human`, `table` |
202
+ | `--no-color` | | Disable colored output |
203
+ | `--help` | `-h` | Show help |
204
+ | `--version` | `-v` | Show version |
205
+
206
+ ## AI Agent Integration
207
+
208
+ The CLI is designed for programmatic use by AI agents:
209
+
210
+ - Structured JSON output with `--format json`
211
+ - Consistent error messages with non-zero exit codes
212
+ - Fully non-interactive and scriptable
213
+
214
+ ```bash
215
+ # Get all servers as JSON
216
+ forge-cli servers list --format json
217
+
218
+ # Deploy and capture output
219
+ forge-cli deployments deploy --server 123 --site 456 --format json
220
+ ```
221
+
222
+ ## Requirements
223
+
224
+ - **Node.js 24+**
225
+ - **Laravel Forge account** with API token
226
+
227
+ ## Getting Your API Token
228
+
229
+ 1. Log into [Laravel Forge](https://forge.laravel.com)
230
+ 2. Go to **Account → API Tokens**
231
+ 3. Create a new token with the scopes you need
232
+ 4. Copy the token (it's only shown once)
233
+
234
+ ## License
235
+
236
+ MIT © [Studio Meta](https://www.studiometa.fr)
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}