@swovohq/fuel 0.2.0-alpha.8 → 0.2.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.
- package/LICENSE +21 -0
- package/README.md +71 -19
- package/dist/bin/fuel.js +134 -44
- package/dist/bin/fuel.js.map +1 -1
- package/dist/commands/config-verify.d.ts +4 -0
- package/dist/commands/config-verify.d.ts.map +1 -0
- package/dist/commands/config-verify.js +66 -0
- package/dist/commands/config-verify.js.map +1 -0
- package/dist/commands/create-app.d.ts +6 -1
- package/dist/commands/create-app.d.ts.map +1 -1
- package/dist/commands/create-app.js +66 -45
- package/dist/commands/create-app.js.map +1 -1
- package/dist/commands/infra-deploy.d.ts +5 -0
- package/dist/commands/infra-deploy.d.ts.map +1 -1
- package/dist/commands/infra-deploy.js +59 -15
- package/dist/commands/infra-deploy.js.map +1 -1
- package/dist/commands/infra-destroy.d.ts +2 -0
- package/dist/commands/infra-destroy.d.ts.map +1 -1
- package/dist/commands/infra-destroy.js +4 -6
- package/dist/commands/infra-destroy.js.map +1 -1
- package/dist/commands/infra-init.d.ts +1 -0
- package/dist/commands/infra-init.d.ts.map +1 -1
- package/dist/commands/infra-init.js +99 -14
- package/dist/commands/infra-init.js.map +1 -1
- package/dist/commands/migrate-init.d.ts.map +1 -1
- package/dist/commands/migrate-init.js +28 -12
- package/dist/commands/migrate-init.js.map +1 -1
- package/dist/engines/template-source.d.ts.map +1 -1
- package/dist/engines/template-source.js +14 -1
- package/dist/engines/template-source.js.map +1 -1
- package/dist/infra/config-loader.d.ts.map +1 -1
- package/dist/infra/config-loader.js +10 -2
- package/dist/infra/config-loader.js.map +1 -1
- package/dist/infra/config-writer.d.ts +2 -7
- package/dist/infra/config-writer.d.ts.map +1 -1
- package/dist/infra/config-writer.js +5 -11
- package/dist/infra/config-writer.js.map +1 -1
- package/dist/infra/credentials.d.ts +10 -2
- package/dist/infra/credentials.d.ts.map +1 -1
- package/dist/infra/credentials.js +44 -25
- package/dist/infra/credentials.js.map +1 -1
- package/dist/infra/git-client.d.ts +1 -1
- package/dist/infra/git-client.d.ts.map +1 -1
- package/dist/infra/git-client.js +8 -4
- package/dist/infra/git-client.js.map +1 -1
- package/dist/infra/orchestrator.d.ts +4 -1
- package/dist/infra/orchestrator.d.ts.map +1 -1
- package/dist/infra/orchestrator.js +38 -29
- package/dist/infra/orchestrator.js.map +1 -1
- package/dist/infra/port-utils.d.ts +4 -0
- package/dist/infra/port-utils.d.ts.map +1 -0
- package/dist/infra/port-utils.js +77 -0
- package/dist/infra/port-utils.js.map +1 -0
- package/dist/infra/preflight.d.ts +1 -1
- package/dist/infra/preflight.d.ts.map +1 -1
- package/dist/infra/preflight.js +4 -4
- package/dist/infra/preflight.js.map +1 -1
- package/dist/infra/s3-state-bucket.d.ts +1 -1
- package/dist/infra/s3-state-bucket.d.ts.map +1 -1
- package/dist/infra/s3-state-bucket.js +21 -26
- package/dist/infra/s3-state-bucket.js.map +1 -1
- package/dist/infra/secrets-manager-client.d.ts.map +1 -1
- package/dist/infra/secrets-manager-client.js +35 -1
- package/dist/infra/secrets-manager-client.js.map +1 -1
- package/dist/infra/template-engine.d.ts.map +1 -1
- package/dist/infra/template-engine.js +11 -25
- package/dist/infra/template-engine.js.map +1 -1
- package/dist/infra/tofu-runner.d.ts +1 -2
- package/dist/infra/tofu-runner.d.ts.map +1 -1
- package/dist/infra/tofu-runner.js +5 -5
- package/dist/infra/tofu-runner.js.map +1 -1
- package/package.json +10 -6
- package/schema/fuel.schema.json +158 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Swovo HQ
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -26,15 +26,15 @@ fuel create:app my-app -m billing,documents
|
|
|
26
26
|
### Full ECS provisioning (scaffold + cloud infra)
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
|
-
fuel infra:init # Step 1: generate
|
|
30
|
-
fuel create:app my-app -
|
|
29
|
+
fuel infra:init # Step 1: generate fuel.yml + .fuel-credentials
|
|
30
|
+
fuel create:app my-app -c fuel.yml # Step 2: scaffold + provision infrastructure
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
### Add infra to an existing project
|
|
34
34
|
|
|
35
35
|
```bash
|
|
36
|
-
fuel infra:init # Step 1: generate
|
|
37
|
-
fuel infra:deploy --config
|
|
36
|
+
fuel infra:init # Step 1: generate fuel.yml + .fuel-credentials
|
|
37
|
+
fuel infra:deploy --config fuel.yml # Step 2: provision infrastructure
|
|
38
38
|
```
|
|
39
39
|
|
|
40
40
|
## Commands
|
|
@@ -42,8 +42,9 @@ fuel infra:deploy --config config.json # Step 2: provision infrastruct
|
|
|
42
42
|
| Command | Description |
|
|
43
43
|
|---|---|
|
|
44
44
|
| `fuel list:modules` | List available modules |
|
|
45
|
+
| `fuel config:verify <path>` | Validate `fuel.yml` and run preflight checks |
|
|
45
46
|
| `fuel create:app <name>` | Scaffold a new app from the monorepo template |
|
|
46
|
-
| `fuel infra:init` | Generate `
|
|
47
|
+
| `fuel infra:init` | Generate `fuel.yml` and `.fuel-credentials` interactively |
|
|
47
48
|
| `fuel infra:deploy` | Run or resume infrastructure provisioning |
|
|
48
49
|
| `fuel infra:destroy` | Tear down all provisioned cloud resources |
|
|
49
50
|
| `fuel migrate:init` | Generate and run database migrations |
|
|
@@ -63,14 +64,23 @@ fuel create:app <name> [options]
|
|
|
63
64
|
| `-m, --modules <list>` | Comma-separated modules to include (e.g. `billing,documents`) |
|
|
64
65
|
| `-o, --output <path>` | Output directory (defaults to `./<name>`) |
|
|
65
66
|
| `-s, --source <path>` | Path to a local monorepo root |
|
|
66
|
-
| `-
|
|
67
|
-
| `-c, --config <path>` | Path to `config.json` for ECS provisioning |
|
|
67
|
+
| `-c, --config <path>` | Path to `fuel.yml` — triggers ECS provisioning |
|
|
68
68
|
| `--dry-run` | Preview without writing files |
|
|
69
69
|
| `--skip-install` | Skip `yarn install` (also skips migrations) |
|
|
70
70
|
| `--skip-build` | Skip `yarn build` (also skips migrations) |
|
|
71
71
|
| `--skip-git` | Skip `git init` and initial commit |
|
|
72
72
|
| `--skip-migration-generation` | Skip database migration generation |
|
|
73
|
-
| `--
|
|
73
|
+
| `--keep-migrations` | Keep existing migration files from the template and skip migration generation |
|
|
74
|
+
| `--target-branch <branch>` | Only push to this branch in the target repo (CI use) |
|
|
75
|
+
| `--force-push` | Force push to the target repo (for CI-managed repos) |
|
|
76
|
+
| `--destroy-on-failure` | Destroy provisioned infrastructure if OpenTofu apply fails (default: preserve) |
|
|
77
|
+
| `--skip-branch-protection` | Skip applying branch protection rules after pushing (useful in CI when protections are already set) |
|
|
78
|
+
| `--github-token <token>` | GitHub token |
|
|
79
|
+
| `--github-username <user>` | GitHub username |
|
|
80
|
+
| `--github-organization <org>` | GitHub organization |
|
|
81
|
+
| `--aws-access-key-id <key>` | AWS access key ID |
|
|
82
|
+
| `--aws-secret-access-key <secret>` | AWS secret access key |
|
|
83
|
+
| `--aws-region <region>` | AWS region |
|
|
74
84
|
|
|
75
85
|
**What it does:**
|
|
76
86
|
|
|
@@ -79,7 +89,7 @@ fuel create:app <name> [options]
|
|
|
79
89
|
3. Starts Docker, generates and runs database migrations
|
|
80
90
|
4. Creates an initial git commit
|
|
81
91
|
|
|
82
|
-
With `--
|
|
92
|
+
With `--config fuel.yml`, it additionally:
|
|
83
93
|
|
|
84
94
|
5. Creates a GitHub repository
|
|
85
95
|
6. Provisions AWS infrastructure (ECR, OIDC, VPC, RDS, ECS)
|
|
@@ -87,9 +97,28 @@ With `--deployment ecs`, it additionally:
|
|
|
87
97
|
8. Pushes code to trigger the first deployment
|
|
88
98
|
9. Applies branch protection rules
|
|
89
99
|
|
|
100
|
+
## `config:verify`
|
|
101
|
+
|
|
102
|
+
Validates `fuel.yml` syntax/schema and optionally runs preflight checks (OpenTofu, credentials). Failures are reported as warnings — the command never exits with an error.
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
fuel config:verify <path> [options]
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
| Flag | Description |
|
|
109
|
+
|---|---|
|
|
110
|
+
| `--config-only` | Only validate the config file. Skip preflight checks. |
|
|
111
|
+
|
|
112
|
+
**Examples:**
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
fuel config:verify fuel.yml # Validate config + preflight checks
|
|
116
|
+
fuel config:verify fuel.yml --config-only # Validate config only
|
|
117
|
+
```
|
|
118
|
+
|
|
90
119
|
## `infra:init`
|
|
91
120
|
|
|
92
|
-
Interactively generates `
|
|
121
|
+
Interactively generates `fuel.yml` and `.fuel-credentials`.
|
|
93
122
|
|
|
94
123
|
```bash
|
|
95
124
|
fuel infra:init [options]
|
|
@@ -97,7 +126,7 @@ fuel infra:init [options]
|
|
|
97
126
|
|
|
98
127
|
| Flag | Description |
|
|
99
128
|
|---|---|
|
|
100
|
-
| `-o, --output <path>` | Output path for `
|
|
129
|
+
| `-o, --output <path>` | Output path for `fuel.yml` |
|
|
101
130
|
| `--template` | Write a minimal template without prompts |
|
|
102
131
|
|
|
103
132
|
## `infra:deploy`
|
|
@@ -111,9 +140,18 @@ fuel infra:deploy [options]
|
|
|
111
140
|
| Flag | Description |
|
|
112
141
|
|---|---|
|
|
113
142
|
| `-p, --path <path>` | Path to project root |
|
|
114
|
-
| `-c, --config <path>` | Path to `
|
|
143
|
+
| `-c, --config <path>` | Path to `fuel.yml` (generates `fuel.yml`) |
|
|
115
144
|
| `--regenerate` | Regenerate the `/infra` folder from templates |
|
|
116
145
|
| `--plan-only` | Run OpenTofu plan without creating resources |
|
|
146
|
+
| `--infra-only` | Run only OpenTofu on an existing `/infra` folder (no config, no git push) |
|
|
147
|
+
| `--destroy-on-failure` | Destroy provisioned resources if OpenTofu apply fails (default: preserve) |
|
|
148
|
+
| `--skip-branch-protection` | Skip applying branch protection rules after pushing (useful in CI when protections are already set) |
|
|
149
|
+
| `--github-token <token>` | GitHub token |
|
|
150
|
+
| `--github-username <user>` | GitHub username |
|
|
151
|
+
| `--github-organization <org>` | GitHub organization |
|
|
152
|
+
| `--aws-access-key-id <key>` | AWS access key ID |
|
|
153
|
+
| `--aws-secret-access-key <secret>` | AWS secret access key |
|
|
154
|
+
| `--aws-region <region>` | AWS region |
|
|
117
155
|
|
|
118
156
|
## `infra:destroy`
|
|
119
157
|
|
|
@@ -126,6 +164,12 @@ fuel infra:destroy [options]
|
|
|
126
164
|
| Flag | Description |
|
|
127
165
|
|---|---|
|
|
128
166
|
| `-p, --path <path>` | Path to project root |
|
|
167
|
+
| `--github-token <token>` | GitHub token |
|
|
168
|
+
| `--github-username <user>` | GitHub username |
|
|
169
|
+
| `--github-organization <org>` | GitHub organization |
|
|
170
|
+
| `--aws-access-key-id <key>` | AWS access key ID |
|
|
171
|
+
| `--aws-secret-access-key <secret>` | AWS secret access key |
|
|
172
|
+
| `--aws-region <region>` | AWS region |
|
|
129
173
|
|
|
130
174
|
## `migrate:init`
|
|
131
175
|
|
|
@@ -140,19 +184,27 @@ fuel migrate:init [options]
|
|
|
140
184
|
| `-p, --path <path>` | Path to project root |
|
|
141
185
|
| `--skip-commit` | Skip the git commit after migrations |
|
|
142
186
|
|
|
187
|
+
## Configuration Schema
|
|
188
|
+
|
|
189
|
+
`fuel.yml` includes a JSON Schema reference for editor autocompletion. When using VS Code with the [YAML extension](https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml), you get autocomplete, validation, and inline documentation automatically.
|
|
190
|
+
|
|
191
|
+
The schema is bundled at `node_modules/@swovohq/fuel/schema/fuel.schema.json`.
|
|
192
|
+
|
|
143
193
|
## Credentials
|
|
144
194
|
|
|
145
|
-
Infrastructure commands require AWS and GitHub credentials
|
|
195
|
+
Infrastructure commands require AWS and GitHub credentials. Each key is resolved independently in this order (sources are merged):
|
|
196
|
+
|
|
197
|
+
1. **CLI flags** (e.g., `--github-token`) — highest priority
|
|
198
|
+
2. **`.fuel-credentials`** JSON file (project root, then CWD fallback)
|
|
199
|
+
3. **Environment variables**: `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_REGION`, `GITHUB_TOKEN`, `GITHUB_USERNAME`, `GITHUB_ORGANIZATION`
|
|
146
200
|
|
|
147
|
-
|
|
148
|
-
2. **`.fuel-credentials`** file in the project root
|
|
149
|
-
3. **`.fuel-credentials`** file in the current working directory
|
|
201
|
+
Sources complement each other — e.g., AWS keys from env vars + `GITHUB_TOKEN` from `.fuel-credentials` = valid.
|
|
150
202
|
|
|
151
|
-
Run `fuel infra:init` to generate `.fuel-credentials` interactively.
|
|
203
|
+
Run `fuel infra:init --credentials-only` to generate `.fuel-credentials` interactively.
|
|
152
204
|
|
|
153
205
|
## Infrastructure Architecture
|
|
154
206
|
|
|
155
|
-
When using `--
|
|
207
|
+
When using `--config fuel.yml`, the CLI provisions:
|
|
156
208
|
|
|
157
209
|
- **ECR** - Container registry for app images
|
|
158
210
|
- **ECS** (Fargate) - Container orchestration with ALB
|
|
@@ -176,4 +228,4 @@ GitHub resources (repository, secrets, branch protections) are managed directly
|
|
|
176
228
|
|
|
177
229
|
## License
|
|
178
230
|
|
|
179
|
-
|
|
231
|
+
MIT - see [LICENSE](./LICENSE)
|
package/dist/bin/fuel.js
CHANGED
|
@@ -37,6 +37,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
37
37
|
const commander_1 = require("commander");
|
|
38
38
|
const fs = __importStar(require("fs-extra"));
|
|
39
39
|
const path = __importStar(require("path"));
|
|
40
|
+
const config_verify_1 = require("../commands/config-verify");
|
|
40
41
|
const create_app_1 = require("../commands/create-app");
|
|
41
42
|
const infra_deploy_1 = require("../commands/infra-deploy");
|
|
42
43
|
const infra_destroy_1 = require("../commands/infra-destroy");
|
|
@@ -45,6 +46,31 @@ const list_modules_1 = require("../commands/list-modules");
|
|
|
45
46
|
const migrate_init_1 = require("../commands/migrate-init");
|
|
46
47
|
const packageJson = require(path.join(__dirname, '..', '..', 'package.json'));
|
|
47
48
|
const program = new commander_1.Command();
|
|
49
|
+
function addCredentialOptions(cmd) {
|
|
50
|
+
return cmd
|
|
51
|
+
.option('--github-token <token>', 'GitHub token. Falls back to .fuel-credentials or GITHUB_TOKEN env var.')
|
|
52
|
+
.option('--github-username <username>', 'GitHub username. Falls back to .fuel-credentials or GITHUB_USERNAME env var.')
|
|
53
|
+
.option('--github-organization <org>', 'GitHub organization. Falls back to .fuel-credentials or GITHUB_ORGANIZATION env var.')
|
|
54
|
+
.option('--aws-access-key-id <key>', 'AWS access key ID. Falls back to .fuel-credentials or AWS_ACCESS_KEY_ID env var.')
|
|
55
|
+
.option('--aws-secret-access-key <secret>', 'AWS secret access key. Falls back to .fuel-credentials or AWS_SECRET_ACCESS_KEY env var.')
|
|
56
|
+
.option('--aws-region <region>', 'AWS region. Falls back to .fuel-credentials or AWS_REGION env var.');
|
|
57
|
+
}
|
|
58
|
+
function buildOverrides(flags) {
|
|
59
|
+
const overrides = {};
|
|
60
|
+
if (flags.githubToken)
|
|
61
|
+
overrides.GITHUB_TOKEN = flags.githubToken;
|
|
62
|
+
if (flags.githubUsername)
|
|
63
|
+
overrides.GITHUB_USERNAME = flags.githubUsername;
|
|
64
|
+
if (flags.githubOrganization)
|
|
65
|
+
overrides.GITHUB_ORGANIZATION = flags.githubOrganization;
|
|
66
|
+
if (flags.awsAccessKeyId)
|
|
67
|
+
overrides.AWS_ACCESS_KEY_ID = flags.awsAccessKeyId;
|
|
68
|
+
if (flags.awsSecretAccessKey)
|
|
69
|
+
overrides.AWS_SECRET_ACCESS_KEY = flags.awsSecretAccessKey;
|
|
70
|
+
if (flags.awsRegion)
|
|
71
|
+
overrides.AWS_REGION = flags.awsRegion;
|
|
72
|
+
return Object.keys(overrides).length > 0 ? overrides : undefined;
|
|
73
|
+
}
|
|
48
74
|
program
|
|
49
75
|
.name('fuel')
|
|
50
76
|
.description('Fuel CLI – scaffold apps from the fuel monorepo and provision cloud infrastructure.')
|
|
@@ -56,12 +82,12 @@ Workflows:
|
|
|
56
82
|
fuel create:app <name> [-m modules]
|
|
57
83
|
|
|
58
84
|
2. Full ECS provisioning (scaffold + cloud infra):
|
|
59
|
-
fuel infra:init Step 1: generate
|
|
60
|
-
fuel create:app <name> -
|
|
85
|
+
fuel infra:init Step 1: generate fuel.yml + .fuel-credentials
|
|
86
|
+
fuel create:app <name> -c fuel.yml Step 2: scaffold code and provision infrastructure
|
|
61
87
|
|
|
62
|
-
3. Add infra to an existing project (created without -
|
|
63
|
-
fuel infra:init Step 1: generate
|
|
64
|
-
fuel infra:deploy --config
|
|
88
|
+
3. Add infra to an existing project (created without -c):
|
|
89
|
+
fuel infra:init Step 1: generate fuel.yml + .fuel-credentials
|
|
90
|
+
fuel infra:deploy --config fuel.yml Step 2: generate fuel.yml + provision infrastructure
|
|
65
91
|
|
|
66
92
|
4. Resume / retry infra (after a failure in step 2 or 3):
|
|
67
93
|
fuel infra:deploy [--path <project>] Re-run infrastructure provisioning without re-scaffolding
|
|
@@ -85,9 +111,9 @@ Quick examples:
|
|
|
85
111
|
fuel create:app my-app Scaffold base app
|
|
86
112
|
fuel create:app my-app -m billing,documents Scaffold with modules
|
|
87
113
|
fuel infra:init Interactive infra config setup
|
|
88
|
-
fuel create:app my-app -
|
|
114
|
+
fuel create:app my-app -c fuel.yml Full ECS provisioning
|
|
89
115
|
fuel infra:deploy Resume failed infra provisioning
|
|
90
|
-
fuel infra:deploy --config
|
|
116
|
+
fuel infra:deploy --config fuel.yml Add infra to existing project
|
|
91
117
|
fuel infra:deploy --path ./my-app --regenerate Regenerate /infra and re-deploy
|
|
92
118
|
fuel migrate:init Re-run migration generation
|
|
93
119
|
fuel infra:destroy Tear down all infrastructure`);
|
|
@@ -110,6 +136,28 @@ Examples:
|
|
|
110
136
|
process.exit(1);
|
|
111
137
|
}
|
|
112
138
|
});
|
|
139
|
+
program
|
|
140
|
+
.command('config:verify <configPath>')
|
|
141
|
+
.description('Validate a fuel.yml config file and optionally run preflight checks.\n\n' +
|
|
142
|
+
' By default, validates the config syntax/schema AND runs preflight checks\n' +
|
|
143
|
+
' (OpenTofu version, credentials). Preflight failures are reported as\n' +
|
|
144
|
+
' warnings — the command never exits with an error.\n\n' +
|
|
145
|
+
' Use --config-only to skip preflight checks and only validate the file.')
|
|
146
|
+
.option('--config-only', 'Only validate the config file syntax and schema. Skip preflight checks (OpenTofu, credentials).')
|
|
147
|
+
.addHelpText('after', `
|
|
148
|
+
Examples:
|
|
149
|
+
fuel config:verify fuel.yml Validate config + run preflight checks
|
|
150
|
+
fuel config:verify fuel.yml --config-only Validate config syntax/schema only`)
|
|
151
|
+
.action(async (configPath, opts) => {
|
|
152
|
+
try {
|
|
153
|
+
await (0, config_verify_1.configVerify)(configPath, opts);
|
|
154
|
+
process.exit(0);
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
console.error(`\n Error: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
158
|
+
process.exit(1);
|
|
159
|
+
}
|
|
160
|
+
});
|
|
113
161
|
program
|
|
114
162
|
.command('create:app [appName]')
|
|
115
163
|
.description('Create a new app from the fuel monorepo.\n\n' +
|
|
@@ -118,12 +166,12 @@ program
|
|
|
118
166
|
' Copies the monorepo template, removes unselected modules, installs\n' +
|
|
119
167
|
' dependencies, builds, starts Docker, generates database migrations,\n' +
|
|
120
168
|
' and creates an initial git commit.\n\n' +
|
|
121
|
-
' ECS mode (-
|
|
169
|
+
' ECS mode (-c fuel.yml):\n' +
|
|
122
170
|
' Performs all scaffolding steps above, then provisions cloud infrastructure:\n' +
|
|
123
|
-
' writes fuel.
|
|
171
|
+
' writes fuel.yml, generates /infra (OpenTofu) and .github/workflows/,\n' +
|
|
124
172
|
' creates a GitHub repo, provisions all AWS infrastructure via OpenTofu,\n' +
|
|
125
173
|
' configures GitHub Actions secrets, pushes code, and applies branch protections.\n' +
|
|
126
|
-
'
|
|
174
|
+
' Run "fuel infra:init" first to generate fuel.yml.')
|
|
127
175
|
.option('-m, --modules <list>', 'Comma-separated modules to include (e.g. billing,documents). Omit for base only.', '')
|
|
128
176
|
.option('-a, --all-modules', 'Include all available modules. Cannot be combined with -m.')
|
|
129
177
|
.option('-o, --output <path>', 'Output directory. Defaults to ./<appName> in the current directory.')
|
|
@@ -133,9 +181,18 @@ program
|
|
|
133
181
|
.option('--skip-git', 'Skip git init and the initial commit.')
|
|
134
182
|
.option('--skip-build', 'Skip yarn build. Also implicitly skips migration generation (requires build).')
|
|
135
183
|
.option('--skip-migration-generation', 'Skip database migration generation and execution. Docker will not be started.')
|
|
136
|
-
.option('-
|
|
137
|
-
.option('-c, --config <path>', 'Path to
|
|
138
|
-
.option('--
|
|
184
|
+
.option('--keep-migrations', 'Keep existing migration files from the template and skip migration generation. Docker will not be started.')
|
|
185
|
+
.option('-c, --config <path>', 'Path to fuel.yml for ECS provisioning. When provided, infrastructure is provisioned after scaffolding. Generate one with "fuel infra:init". Cannot be combined with --skip-install, --skip-build, or --skip-migration-generation (unless --keep-migrations is also set).')
|
|
186
|
+
.option('--target-branch <branch>', 'Only push to this branch in the target repo. Useful in CI to deploy a specific environment.')
|
|
187
|
+
.option('--force-push', 'Force push to the target repo. Use when each run scaffolds a fresh project and the target repo already has commits.')
|
|
188
|
+
.option('--destroy-on-failure', 'Destroy provisioned infrastructure if OpenTofu apply fails. Default: false (resources are preserved for re-run).')
|
|
189
|
+
.option('--skip-branch-protection', 'Skip applying branch protection rules after pushing.')
|
|
190
|
+
.option('--github-token <token>', 'GitHub token. Falls back to .fuel-credentials or GITHUB_TOKEN env var.')
|
|
191
|
+
.option('--github-username <username>', 'GitHub username. Falls back to .fuel-credentials or GITHUB_USERNAME env var.')
|
|
192
|
+
.option('--github-organization <org>', 'GitHub organization. Falls back to .fuel-credentials or GITHUB_ORGANIZATION env var.')
|
|
193
|
+
.option('--aws-access-key-id <key>', 'AWS access key ID. Falls back to .fuel-credentials or AWS_ACCESS_KEY_ID env var.')
|
|
194
|
+
.option('--aws-secret-access-key <secret>', 'AWS secret access key. Falls back to .fuel-credentials or AWS_SECRET_ACCESS_KEY env var.')
|
|
195
|
+
.option('--aws-region <region>', 'AWS region. Falls back to .fuel-credentials or AWS_REGION env var.')
|
|
139
196
|
.addHelpText('after', `
|
|
140
197
|
Scaffolding examples:
|
|
141
198
|
fuel create:app my-app Base app, no optional modules
|
|
@@ -146,8 +203,8 @@ Scaffolding examples:
|
|
|
146
203
|
fuel create:app my-app --skip-install --skip-git Scaffold only, no install/git/migrations
|
|
147
204
|
|
|
148
205
|
ECS provisioning (full workflow):
|
|
149
|
-
fuel infra:init Step 1: generate
|
|
150
|
-
fuel create:app my-app -
|
|
206
|
+
fuel infra:init Step 1: generate fuel.yml + .fuel-credentials
|
|
207
|
+
fuel create:app my-app -c fuel.yml Step 2: scaffold + provision cloud infrastructure
|
|
151
208
|
|
|
152
209
|
Recovery commands:
|
|
153
210
|
cd my-app && fuel infra:deploy Resume failed infra provisioning
|
|
@@ -164,7 +221,11 @@ Recovery commands:
|
|
|
164
221
|
throw new Error('Missing app name. Provide it as a positional argument or use --config to read it from a config file.');
|
|
165
222
|
}
|
|
166
223
|
const configPath = path.resolve(opts.config);
|
|
167
|
-
const
|
|
224
|
+
const content = await fs.readFile(configPath, 'utf-8');
|
|
225
|
+
const YAML = require('yaml');
|
|
226
|
+
const raw = configPath.endsWith('.json')
|
|
227
|
+
? JSON.parse(content)
|
|
228
|
+
: YAML.parse(content);
|
|
168
229
|
if (!raw.name || typeof raw.name !== 'string') {
|
|
169
230
|
throw new Error(`Config file "${opts.config}" does not contain a valid "name" field.`);
|
|
170
231
|
}
|
|
@@ -190,10 +251,16 @@ Recovery commands:
|
|
|
190
251
|
skipGit: opts.skipGit,
|
|
191
252
|
skipBuild: opts.skipBuild,
|
|
192
253
|
skipMigrationGeneration: opts.skipMigrationGeneration,
|
|
193
|
-
|
|
254
|
+
keepMigrations: opts.keepMigrations,
|
|
255
|
+
targetBranch: opts.targetBranch,
|
|
256
|
+
forcePush: opts.forcePush,
|
|
257
|
+
destroyOnFailure: opts.destroyOnFailure,
|
|
258
|
+
skipBranchProtection: opts.skipBranchProtection,
|
|
194
259
|
config: opts.config,
|
|
195
|
-
githubToken: opts.githubToken
|
|
260
|
+
githubToken: opts.githubToken,
|
|
261
|
+
credentialOverrides: buildOverrides(opts)
|
|
196
262
|
});
|
|
263
|
+
process.exit(0);
|
|
197
264
|
}
|
|
198
265
|
catch (error) {
|
|
199
266
|
console.error(`\n Error: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
@@ -202,39 +269,41 @@ Recovery commands:
|
|
|
202
269
|
});
|
|
203
270
|
program
|
|
204
271
|
.command('infra:init')
|
|
205
|
-
.description('Generate
|
|
272
|
+
.description('Generate fuel.yml and .fuel-credentials for ECS infrastructure provisioning.\n\n' +
|
|
206
273
|
' Interactive mode (default):\n' +
|
|
207
274
|
' Prompts for AWS credentials, GitHub token, app configuration (API/Web,\n' +
|
|
208
275
|
' PostgreSQL, Redis, CPU/memory), environments (dev/staging/production),\n' +
|
|
209
276
|
' domains, and environment variables. Validates credentials against AWS\n' +
|
|
210
|
-
' and GitHub APIs. Writes
|
|
277
|
+
' and GitHub APIs. Writes fuel.yml and .fuel-credentials (auto-added\n' +
|
|
211
278
|
' to .gitignore).\n\n' +
|
|
212
279
|
' Template mode (--template):\n' +
|
|
213
|
-
' Writes a minimal
|
|
280
|
+
' Writes a minimal fuel.yml template for manual editing. Does not\n' +
|
|
214
281
|
' prompt for credentials or validate anything.')
|
|
215
|
-
.option('-o, --output <path>', 'Output path for
|
|
216
|
-
.option('--template', 'Write a minimal
|
|
282
|
+
.option('-o, --output <path>', 'Output path for fuel.yml. Defaults to ./fuel.yml in the current directory.')
|
|
283
|
+
.option('--template', 'Write a minimal fuel.yml template without prompts or credential validation.')
|
|
284
|
+
.option('--credentials-only', 'Only generate .fuel-credentials (prompt for AWS + GitHub credentials, verify, and write). Skips fuel.yml generation.')
|
|
217
285
|
.addHelpText('after', `
|
|
218
286
|
Generated files:
|
|
219
|
-
|
|
287
|
+
fuel.yml Infrastructure configuration (apps, environments, domains, resources)
|
|
220
288
|
.fuel-credentials AWS + GitHub credentials (auto-added to .gitignore, never commit this file)
|
|
221
289
|
|
|
222
290
|
Workflows using this command:
|
|
223
291
|
New project (scaffold + infra in one step):
|
|
224
|
-
1. fuel infra:init Generate
|
|
225
|
-
2. fuel create:app <name> -
|
|
292
|
+
1. fuel infra:init Generate fuel.yml + .fuel-credentials
|
|
293
|
+
2. fuel create:app <name> -c fuel.yml Scaffold + provision infrastructure
|
|
226
294
|
|
|
227
295
|
Existing project (add infra later):
|
|
228
|
-
1. fuel infra:init Generate
|
|
229
|
-
2. fuel infra:deploy -c
|
|
296
|
+
1. fuel infra:init Generate fuel.yml + .fuel-credentials
|
|
297
|
+
2. fuel infra:deploy -c fuel.yml Generate fuel.yml + provision infrastructure
|
|
230
298
|
|
|
231
299
|
Examples:
|
|
232
300
|
fuel infra:init Interactive setup
|
|
233
301
|
fuel infra:init --template Write base template (no prompts, no credentials)
|
|
234
|
-
fuel infra:init -o ./infra/
|
|
302
|
+
fuel infra:init -o ./infra/fuel.yml Write fuel.yml to a custom path`)
|
|
235
303
|
.action(async (opts) => {
|
|
236
304
|
try {
|
|
237
305
|
await (0, infra_init_1.infraInit)(opts);
|
|
306
|
+
process.exit(0);
|
|
238
307
|
}
|
|
239
308
|
catch (error) {
|
|
240
309
|
console.error(`\n Error: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
@@ -244,30 +313,39 @@ Examples:
|
|
|
244
313
|
program
|
|
245
314
|
.command('infra:deploy')
|
|
246
315
|
.description('Run or resume infrastructure provisioning on an already-generated project.\n\n' +
|
|
247
|
-
' Use this command after "fuel create:app -
|
|
316
|
+
' Use this command after "fuel create:app -c fuel.yml" fails during the infrastructure\n' +
|
|
248
317
|
' phase (e.g. missing AWS credentials, network timeout, OpenTofu errors).\n' +
|
|
249
318
|
' It re-runs only the infrastructure steps without re-scaffolding the project.\n\n' +
|
|
250
319
|
' You can also use this to add infrastructure to a project that was originally\n' +
|
|
251
|
-
' created without -
|
|
320
|
+
' created without -c, by passing --config <path> to generate fuel.yml.\n\n' +
|
|
252
321
|
' Prerequisites:\n' +
|
|
253
|
-
' - The project must contain a fuel.
|
|
322
|
+
' - The project must contain a fuel.yml, or --config must be provided\n' +
|
|
254
323
|
' - Credentials must be available via env vars or .fuel-credentials file\n\n' +
|
|
255
324
|
' On failure, partial cloud resources are preserved (no rollback), so you\n' +
|
|
256
325
|
' can fix the issue and re-run this command as many times as needed.')
|
|
257
326
|
.option('-p, --path <path>', 'Path to the project root. Defaults to the current directory.')
|
|
258
|
-
.option('-c, --config <path>', 'Path to
|
|
259
|
-
.option('--regenerate', 'Delete and regenerate the /infra folder from templates before deploying. Use this if you changed
|
|
327
|
+
.option('-c, --config <path>', 'Path to fuel.yml. Generates fuel.yml in the project and provisions infrastructure. Use this to add infra to a project created without -c.')
|
|
328
|
+
.option('--regenerate', 'Delete and regenerate the /infra folder from templates before deploying. Use this if you changed fuel.yml and need fresh OpenTofu files.')
|
|
260
329
|
.option('--plan-only', 'Run OpenTofu plan instead of apply. Shows what would change without creating any resources.')
|
|
330
|
+
.option('--infra-only', 'Run only OpenTofu init + apply on an existing /infra folder. Skips config validation, secret upload, GitHub repo creation, and code push. Reads all variables from default.tfvars.')
|
|
331
|
+
.option('--destroy-on-failure', 'Destroy all provisioned resources if OpenTofu apply fails. Default: false (resources are preserved for re-run).')
|
|
332
|
+
.option('--skip-branch-protection', 'Skip applying branch protection rules after pushing. Useful in CI when protections are already set.')
|
|
333
|
+
.option('--github-token <token>', 'GitHub token. Falls back to .fuel-credentials or GITHUB_TOKEN env var.')
|
|
334
|
+
.option('--github-username <username>', 'GitHub username. Falls back to .fuel-credentials or GITHUB_USERNAME env var.')
|
|
335
|
+
.option('--github-organization <org>', 'GitHub organization. Falls back to .fuel-credentials or GITHUB_ORGANIZATION env var.')
|
|
336
|
+
.option('--aws-access-key-id <key>', 'AWS access key ID. Falls back to .fuel-credentials or AWS_ACCESS_KEY_ID env var.')
|
|
337
|
+
.option('--aws-secret-access-key <secret>', 'AWS secret access key. Falls back to .fuel-credentials or AWS_SECRET_ACCESS_KEY env var.')
|
|
338
|
+
.option('--aws-region <region>', 'AWS region. Falls back to .fuel-credentials or AWS_REGION env var.')
|
|
261
339
|
.addHelpText('after', `
|
|
262
340
|
Credential resolution (in order of priority):
|
|
263
|
-
1.
|
|
264
|
-
GITHUB_TOKEN, GITHUB_USERNAME, GITHUB_ORGANIZATION)
|
|
341
|
+
1. CLI flags (--github-token, --aws-access-key-id, etc.)
|
|
265
342
|
2. .fuel-credentials file in the project root (--path)
|
|
266
343
|
3. .fuel-credentials file in the current working directory
|
|
344
|
+
4. Environment variables (AWS_ACCESS_KEY_ID, GITHUB_TOKEN, etc.)
|
|
267
345
|
|
|
268
346
|
What this command does:
|
|
269
|
-
1. If --config is provided, writes fuel.
|
|
270
|
-
2. Validates fuel.
|
|
347
|
+
1. If --config is provided, writes fuel.yml to the project root
|
|
348
|
+
2. Validates fuel.yml, OpenTofu version, and credentials
|
|
271
349
|
3. Generates the /infra folder if missing (or if --regenerate / --config is passed)
|
|
272
350
|
4. Creates the S3 state bucket if it does not exist (with a unique suffix)
|
|
273
351
|
5. Writes infrastructure secrets to AWS Secrets Manager
|
|
@@ -277,8 +355,8 @@ What this command does:
|
|
|
277
355
|
Examples:
|
|
278
356
|
cd my-app && fuel infra:deploy Resume from inside the project
|
|
279
357
|
fuel infra:deploy -p ./my-app Resume from outside the project
|
|
280
|
-
fuel infra:deploy -c
|
|
281
|
-
fuel infra:deploy -c
|
|
358
|
+
fuel infra:deploy -c fuel.yml Add infra to an existing project
|
|
359
|
+
fuel infra:deploy -c fuel.yml --plan-only Preview what infra would be created
|
|
282
360
|
fuel infra:deploy --regenerate Regenerate /infra folder, then deploy
|
|
283
361
|
fuel infra:deploy --plan-only Preview changes without deploying
|
|
284
362
|
|
|
@@ -286,7 +364,11 @@ To tear down provisioned resources:
|
|
|
286
364
|
fuel infra:destroy Destroy all infrastructure`)
|
|
287
365
|
.action(async (opts) => {
|
|
288
366
|
try {
|
|
289
|
-
await (0, infra_deploy_1.infraDeploy)(
|
|
367
|
+
await (0, infra_deploy_1.infraDeploy)({
|
|
368
|
+
...opts,
|
|
369
|
+
credentialOverrides: buildOverrides(opts)
|
|
370
|
+
});
|
|
371
|
+
process.exit(0);
|
|
290
372
|
}
|
|
291
373
|
catch (error) {
|
|
292
374
|
console.error(`\n Error: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
@@ -325,6 +407,7 @@ Examples:
|
|
|
325
407
|
.action(async (opts) => {
|
|
326
408
|
try {
|
|
327
409
|
await (0, migrate_init_1.migrateInit)(opts);
|
|
410
|
+
process.exit(0);
|
|
328
411
|
}
|
|
329
412
|
catch (error) {
|
|
330
413
|
console.error(`\n Error: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
@@ -337,12 +420,18 @@ program
|
|
|
337
420
|
' Runs "tofu destroy" against the /infra folder, tearing down all AWS and\n' +
|
|
338
421
|
' GitHub resources managed by OpenTofu (ECR, ECS, RDS, ALB, GitHub repo, etc.).\n\n' +
|
|
339
422
|
' Prerequisites:\n' +
|
|
340
|
-
' - The project must contain fuel.
|
|
423
|
+
' - The project must contain fuel.yml and an /infra folder\n' +
|
|
341
424
|
' - Credentials must be available via env vars or .fuel-credentials file')
|
|
342
425
|
.option('-p, --path <path>', 'Path to the project root. Defaults to the current directory.')
|
|
426
|
+
.option('--github-token <token>', 'GitHub token. Falls back to .fuel-credentials or GITHUB_TOKEN env var.')
|
|
427
|
+
.option('--github-username <username>', 'GitHub username. Falls back to .fuel-credentials or GITHUB_USERNAME env var.')
|
|
428
|
+
.option('--github-organization <org>', 'GitHub organization. Falls back to .fuel-credentials or GITHUB_ORGANIZATION env var.')
|
|
429
|
+
.option('--aws-access-key-id <key>', 'AWS access key ID. Falls back to .fuel-credentials or AWS_ACCESS_KEY_ID env var.')
|
|
430
|
+
.option('--aws-secret-access-key <secret>', 'AWS secret access key. Falls back to .fuel-credentials or AWS_SECRET_ACCESS_KEY env var.')
|
|
431
|
+
.option('--aws-region <region>', 'AWS region. Falls back to .fuel-credentials or AWS_REGION env var.')
|
|
343
432
|
.addHelpText('after', `
|
|
344
433
|
What this command does:
|
|
345
|
-
1. Validates fuel.
|
|
434
|
+
1. Validates fuel.yml, OpenTofu version, and credentials
|
|
346
435
|
2. Runs "tofu init" to initialize the backend
|
|
347
436
|
3. Runs "tofu destroy -auto-approve" to tear down all resources
|
|
348
437
|
|
|
@@ -354,7 +443,8 @@ To re-provision after destroying:
|
|
|
354
443
|
fuel infra:deploy Re-create all infrastructure`)
|
|
355
444
|
.action(async (opts) => {
|
|
356
445
|
try {
|
|
357
|
-
await (0, infra_destroy_1.infraDestroy)(opts);
|
|
446
|
+
await (0, infra_destroy_1.infraDestroy)({ ...opts, credentialOverrides: buildOverrides(opts) });
|
|
447
|
+
process.exit(0);
|
|
358
448
|
}
|
|
359
449
|
catch (error) {
|
|
360
450
|
console.error(`\n Error: ${error instanceof Error ? error.message : String(error)}\n`);
|
package/dist/bin/fuel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fuel.js","sourceRoot":"","sources":["../../src/bin/fuel.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,yCAAmC;AACnC,6CAA8B;AAC9B,2CAA4B;AAC5B,uDAAkD;AAClD,2DAAsD;AACtD,6DAAwD;AACxD,uDAAkD;AAClD,2DAAsD;AACtD,2DAAsD;
|
|
1
|
+
{"version":3,"file":"fuel.js","sourceRoot":"","sources":["../../src/bin/fuel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-verify.d.ts","sourceRoot":"","sources":["../../src/commands/config-verify.ts"],"names":[],"mappings":"AAaA,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7B,OAAO,CAAC,IAAI,CAAC,CAoDf"}
|