BoilerWorks
| 6f83112… | anonymous | 1 | # boilerworks init |
| 6f83112… | anonymous | 2 | |
| 6f83112… | anonymous | 3 | Generate a project from a `boilerworks.yaml` manifest. |
| 6f83112… | anonymous | 4 | |
| 6f83112… | anonymous | 5 | ```bash |
| 6f83112… | anonymous | 6 | boilerworks init |
| 6f83112… | anonymous | 7 | boilerworks init --manifest path/to/boilerworks.yaml |
| 6f83112… | anonymous | 8 | boilerworks init --output ~/repos/ |
| 6f83112… | anonymous | 9 | boilerworks init --dry-run |
| 6f83112… | anonymous | 10 | ``` |
| 6f83112… | anonymous | 11 | |
| 6f83112… | anonymous | 12 | ## Options |
| 6f83112… | anonymous | 13 | |
| 6f83112… | anonymous | 14 | | Option | Description | |
| 6f83112… | anonymous | 15 | |--------|-------------| |
| 6f83112… | anonymous | 16 | | `--manifest PATH` | Manifest file to read (default: `boilerworks.yaml` in cwd) | |
| 6f83112… | anonymous | 17 | | `--output PATH` | Where to create the project directory (default: `.`) | |
| 6f83112… | anonymous | 18 | | `--dry-run` | Print what would happen without touching the filesystem | |
| 6f83112… | anonymous | 19 | |
| 6f83112… | anonymous | 20 | ## What it does |
| 6f83112… | anonymous | 21 | |
| 6f83112… | anonymous | 22 | 1. Reads and validates `boilerworks.yaml` |
| 6f83112… | anonymous | 23 | 2. Clones `ConflictHQ/boilerworks-{family}` → `{output}/{project}/` |
| 6f83112… | anonymous | 24 | 3. Removes `.git/` from the clone |
| 6f83112… | anonymous | 25 | 4. Runs string replacement across all text files: `boilerworks` → `{project}` (3 case variants) |
| 6f83112… | anonymous | 26 | 5. Renames files and directories containing `boilerworks` |
| 6f83112… | anonymous | 27 | 6. If `ops: true` and `cloud` is set: |
| 6f83112… | anonymous | 28 | - Clones `ConflictHQ/boilerworks-opscode` |
| 6f83112… | anonymous | 29 | - Standard topology: places it at `{output}/{project}-ops/` |
| 6f83112… | anonymous | 30 | - Omni topology: places it at `{output}/{project}/ops/` |
| 6f83112… | anonymous | 31 | - Writes `{cloud}/config.env` with project name, region, domain |
| 6f83112… | anonymous | 32 | 7. Runs `git init` + initial commit |
| 6f83112… | anonymous | 33 | |
| 6f83112… | anonymous | 34 | ## Clone auth |
| 6f83112… | anonymous | 35 | |
| 6f83112… | anonymous | 36 | The CLI tries SSH first, then HTTPS: |
| 6f83112… | anonymous | 37 | |
| 6f83112… | anonymous | 38 | ``` |
| 6f83112… | anonymous | 39 | [email protected]:ConflictHQ/boilerworks-{family}.git ← tried first |
| 6f83112… | anonymous | 40 | https://github.com/ConflictHQ/boilerworks-{family}.git ← fallback |
| 6f83112… | anonymous | 41 | ``` |
| 6f83112… | anonymous | 42 | |
| 6f83112… | anonymous | 43 | ## Dry run example |
| 6f83112… | anonymous | 44 | |
| 6f83112… | anonymous | 45 | ```bash |
| 6f83112… | anonymous | 46 | boilerworks init --dry-run |
| 6f83112… | anonymous | 47 | |
| 6f83112… | anonymous | 48 | 1. Clone ConflictHQ/boilerworks-django-nextjs |
| 6f83112… | anonymous | 49 | 2. Remove .git/ from cloned directory |
| 6f83112… | anonymous | 50 | 3. Replace all 'boilerworks' → 'my-app' (case-variant) |
| 6f83112… | anonymous | 51 | 4. Rename files/dirs containing 'boilerworks' |
| 6f83112… | anonymous | 52 | 5. Update CLAUDE.md and README.md headers |
| 6f83112… | anonymous | 53 | 6. git init + initial commit in /Users/me/repos/my-app |
| 6f83112… | anonymous | 54 | 7. Clone ConflictHQ/boilerworks-opscode → /Users/me/repos/my-app-ops |
| 6f83112… | anonymous | 55 | 8. Render + rename ops files (boilerworks → my-app) |
| 6f83112… | anonymous | 56 | 9. Write aws/config.env (project, region, domain) |
| 6f83112… | anonymous | 57 | 10. git init ops repo in /Users/me/repos/my-app-ops |
| 6f83112… | anonymous | 58 | |
| 6f83112… | anonymous | 59 | Output directory: /Users/me/repos/my-app |
| 6f83112… | anonymous | 60 | ``` |