context-first-cli 1.7.0 → 1.8.1
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/README.md +527 -142
- package/dist/commands/config-setup.d.ts.map +1 -1
- package/dist/commands/config-setup.js +7 -0
- package/dist/commands/config-setup.js.map +1 -1
- package/dist/commands/feature.d.ts.map +1 -1
- package/dist/commands/feature.js +7 -0
- package/dist/commands/feature.js.map +1 -1
- package/dist/utils/docker.d.ts +52 -0
- package/dist/utils/docker.d.ts.map +1 -0
- package/dist/utils/docker.js +201 -0
- package/dist/utils/docker.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,266 +1,651 @@
|
|
|
1
1
|
# Context-First CLI
|
|
2
2
|
|
|
3
|
-
A
|
|
3
|
+
> A universal CLI for managing Context-First development methodology across any project ecosystem.
|
|
4
|
+
|
|
5
|
+
Orchestrate multi-repository workflows, create isolated feature workspaces, and maintain consistency for both human developers and AI agents.
|
|
6
|
+
|
|
7
|
+
[](https://www.npmjs.com/package/context-first-cli)
|
|
8
|
+
[](https://opensource.org/licenses/MIT)
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Table of Contents
|
|
13
|
+
|
|
14
|
+
- [Why Context-First CLI?](#why-context-first-cli)
|
|
15
|
+
- [Quick Start](#quick-start)
|
|
16
|
+
- [Core Concepts](#core-concepts)
|
|
17
|
+
- [Installation](#installation)
|
|
18
|
+
- [Commands](#commands)
|
|
19
|
+
- [Workflow Guide](#workflow-guide)
|
|
20
|
+
- [Docker Support](#docker-support)
|
|
21
|
+
- [Architecture](#architecture)
|
|
22
|
+
- [Examples](#examples)
|
|
23
|
+
- [Troubleshooting](#troubleshooting)
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Why Context-First CLI?
|
|
28
|
+
|
|
29
|
+
**The Problem**: Managing multiple repositories, coordinating feature development, and maintaining consistent processes across teams is complex and error-prone.
|
|
30
|
+
|
|
31
|
+
**The Solution**: Context-First CLI provides:
|
|
32
|
+
|
|
33
|
+
✅ **Isolated Feature Workspaces** - Work on multiple features simultaneously without conflicts
|
|
34
|
+
✅ **Git Worktree Integration** - Efficient branch management without re-cloning repositories
|
|
35
|
+
✅ **Docker Support** - Automatic `docker-compose.yml` generation with dynamic ports
|
|
36
|
+
✅ **AI-Ready** - Pre-configured command templates for AI assistants (Claude, Cursor)
|
|
37
|
+
✅ **Cross-Platform** - Works on Windows, macOS, and Linux
|
|
38
|
+
✅ **Project-Agnostic** - One CLI for all your projects
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Quick Start
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# 1. Install globally
|
|
46
|
+
npm install -g context-first-cli
|
|
47
|
+
|
|
48
|
+
# 2. Create orchestrator (project control center)
|
|
49
|
+
npx context-first-cli@latest create:orchestrator
|
|
50
|
+
|
|
51
|
+
# 3. Configure local environment
|
|
52
|
+
cd your-orchestrator/
|
|
53
|
+
npx context-first-cli@latest config:setup
|
|
54
|
+
|
|
55
|
+
# 4. Add repositories
|
|
56
|
+
npx context-first-cli@latest add:repo
|
|
57
|
+
|
|
58
|
+
# 5. Start working on a feature
|
|
59
|
+
npx context-first-cli@latest feature start FIN-123
|
|
60
|
+
|
|
61
|
+
# 6. Enter workspace and start services
|
|
62
|
+
cd .sessions/FIN-123
|
|
63
|
+
docker-compose up -d
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**That's it!** You now have an isolated workspace with all repositories checked out and services running.
|
|
4
67
|
|
|
5
68
|
---
|
|
6
69
|
|
|
7
|
-
##
|
|
70
|
+
## Core Concepts
|
|
8
71
|
|
|
9
|
-
|
|
72
|
+
### 1. Orchestrator Repository
|
|
10
73
|
|
|
11
|
-
|
|
74
|
+
The **single source of truth** for your project's development process.
|
|
12
75
|
|
|
13
|
-
|
|
76
|
+
**Contains**:
|
|
77
|
+
- `context-manifest.json` - Repository definitions and relationships
|
|
78
|
+
- `.claude/commands/` - AI command templates
|
|
79
|
+
- `ai.properties.md` - Local configuration (gitignored)
|
|
80
|
+
- `.contextrc.json` - Makes orchestrator self-aware
|
|
14
81
|
|
|
15
|
-
|
|
16
|
-
- **Repository Manifest**: A `context-manifest.json` file that maps out your entire project ecosystem, defining all repositories (including MetaSpecs) and their relationships.
|
|
17
|
-
- **Configuration Templates**: Files like `ai.properties.md` that define project-specific commands (lint, test, build) and settings.
|
|
82
|
+
**Purpose**: Define your development methodology once, use everywhere.
|
|
18
83
|
|
|
19
84
|
### 2. Feature Workspaces
|
|
20
85
|
|
|
21
|
-
|
|
86
|
+
**Isolated environments** for each feature you work on.
|
|
87
|
+
|
|
88
|
+
**Location**: `orchestrator/.sessions/<ISSUE-ID>/`
|
|
89
|
+
|
|
90
|
+
**Contains**:
|
|
91
|
+
- Git worktrees for each repository (efficient, no re-cloning)
|
|
92
|
+
- `docker-compose.yml` with dynamic ports
|
|
93
|
+
- Feature-specific documentation
|
|
22
94
|
|
|
23
|
-
|
|
24
|
-
-
|
|
95
|
+
**Benefits**:
|
|
96
|
+
- Work on multiple features simultaneously
|
|
97
|
+
- No port conflicts (FIN-11 → 3011, FIN-12 → 3012)
|
|
98
|
+
- Clean separation of concerns
|
|
25
99
|
|
|
26
|
-
### 3.
|
|
100
|
+
### 3. Git Worktree
|
|
27
101
|
|
|
28
|
-
|
|
102
|
+
**Efficient branch management** without multiple clones.
|
|
103
|
+
|
|
104
|
+
**How it works**:
|
|
105
|
+
```
|
|
106
|
+
Main Repository (~/dev/backend):
|
|
107
|
+
└── main branch
|
|
29
108
|
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
|
|
109
|
+
Workspace 1 (.sessions/FIN-11/backend):
|
|
110
|
+
└── feature/FIN-11 branch (worktree)
|
|
111
|
+
|
|
112
|
+
Workspace 2 (.sessions/FIN-12/backend):
|
|
113
|
+
└── feature/FIN-12 branch (worktree)
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**All share the same `.git/`** - saving disk space and time.
|
|
33
117
|
|
|
34
118
|
---
|
|
35
119
|
|
|
36
|
-
##
|
|
120
|
+
## Installation
|
|
37
121
|
|
|
38
|
-
|
|
122
|
+
### Global Installation (Recommended)
|
|
39
123
|
|
|
40
124
|
```bash
|
|
41
125
|
npm install -g context-first-cli
|
|
42
126
|
```
|
|
43
127
|
|
|
128
|
+
### Use Without Installing
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
npx context-first-cli@latest <command>
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Requirements
|
|
135
|
+
|
|
136
|
+
- Node.js >= 18.0.0
|
|
137
|
+
- Git >= 2.5.0
|
|
138
|
+
- Docker (optional, for container support)
|
|
139
|
+
|
|
44
140
|
---
|
|
45
141
|
|
|
46
|
-
##
|
|
142
|
+
## Commands
|
|
47
143
|
|
|
48
144
|
### Setup Commands
|
|
49
145
|
|
|
50
146
|
| Command | Description |
|
|
51
|
-
|
|
52
|
-
| `
|
|
53
|
-
| `
|
|
54
|
-
| `
|
|
55
|
-
| `
|
|
56
|
-
| `
|
|
147
|
+
|---------|-------------|
|
|
148
|
+
| `create:orchestrator` | Create new orchestrator repository |
|
|
149
|
+
| `config:setup` | Configure local environment (`ai.properties.md`) |
|
|
150
|
+
| `add:repo` | Add repository to manifest |
|
|
151
|
+
| `add:repo-metaspec` | Add MetaSpecs repository |
|
|
152
|
+
| `init` | Initialize Context-First in existing project |
|
|
57
153
|
|
|
58
154
|
### Workspace Commands
|
|
59
155
|
|
|
60
156
|
| Command | Description |
|
|
61
|
-
|
|
62
|
-
| `
|
|
63
|
-
| `
|
|
64
|
-
| `
|
|
65
|
-
| `
|
|
66
|
-
| `
|
|
157
|
+
|---------|-------------|
|
|
158
|
+
| `feature start <id>` | Create isolated workspace with worktrees |
|
|
159
|
+
| `feature list` | List all active workspaces |
|
|
160
|
+
| `feature switch <id>` | Get command to switch workspace |
|
|
161
|
+
| `feature merge <id>` | Merge feature and clean up |
|
|
162
|
+
| `feature end <id>` | Clean up workspace without merging |
|
|
67
163
|
|
|
68
|
-
###
|
|
164
|
+
### Utility Commands
|
|
69
165
|
|
|
70
166
|
| Command | Description |
|
|
71
|
-
|
|
72
|
-
| `
|
|
73
|
-
| `
|
|
167
|
+
|---------|-------------|
|
|
168
|
+
| `status` | Show workspace status |
|
|
169
|
+
| `doctor` | Check environment health |
|
|
170
|
+
| `update:commands` | Update AI command templates |
|
|
74
171
|
|
|
75
172
|
---
|
|
76
173
|
|
|
77
|
-
##
|
|
78
|
-
|
|
79
|
-
The primary workflow is designed to be simple and centralized within the Orchestrator.
|
|
174
|
+
## Workflow Guide
|
|
80
175
|
|
|
81
|
-
###
|
|
176
|
+
### Initial Setup (Once Per Project)
|
|
82
177
|
|
|
83
|
-
|
|
178
|
+
#### Step 1: Create Orchestrator
|
|
84
179
|
|
|
85
180
|
```bash
|
|
86
|
-
# Run this once per project ecosystem
|
|
87
181
|
npx context-first-cli@latest create:orchestrator
|
|
88
182
|
```
|
|
89
183
|
|
|
90
|
-
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
-
|
|
94
|
-
- `ai.properties.md`: A template for your local configuration (which is gitignored).
|
|
184
|
+
**Prompts**:
|
|
185
|
+
- Project name
|
|
186
|
+
- Description
|
|
187
|
+
- MetaSpecs repository URL (optional)
|
|
95
188
|
|
|
96
|
-
|
|
189
|
+
**Creates**:
|
|
190
|
+
```
|
|
191
|
+
my-project-orchestrator/
|
|
192
|
+
├── .contextrc.json
|
|
193
|
+
├── context-manifest.json
|
|
194
|
+
├── .claude/commands/
|
|
195
|
+
└── ai.properties.md (template)
|
|
196
|
+
```
|
|
97
197
|
|
|
98
|
-
|
|
198
|
+
#### Step 2: Configure Local Environment
|
|
99
199
|
|
|
100
200
|
```bash
|
|
101
|
-
cd
|
|
201
|
+
cd my-project-orchestrator/
|
|
102
202
|
npx context-first-cli@latest config:setup
|
|
103
203
|
```
|
|
104
204
|
|
|
105
|
-
|
|
205
|
+
**Prompts**:
|
|
206
|
+
- `base_path`: Where your repositories live (e.g., `~/dev`)
|
|
207
|
+
- `auto_clone`: Automatically clone missing repos?
|
|
208
|
+
- Task manager: Jira, Linear, GitHub, or none
|
|
106
209
|
|
|
107
|
-
|
|
210
|
+
**Creates**: `ai.properties.md` with your local settings
|
|
108
211
|
|
|
109
|
-
|
|
212
|
+
#### Step 3: Add Repositories
|
|
110
213
|
|
|
111
214
|
```bash
|
|
112
|
-
# Still inside the orchestrator directory
|
|
113
215
|
npx context-first-cli@latest add:repo
|
|
114
216
|
```
|
|
115
217
|
|
|
116
|
-
|
|
218
|
+
**Prompts**:
|
|
219
|
+
- Repository folder name (e.g., `backend`)
|
|
220
|
+
- Git URL
|
|
221
|
+
- Role: `backend`, `frontend`, `metaspecs`, or `other`
|
|
222
|
+
- Description
|
|
117
223
|
|
|
118
|
-
|
|
224
|
+
**Repeat** for each repository in your project.
|
|
119
225
|
|
|
120
|
-
|
|
226
|
+
#### Step 4: Commit Orchestrator
|
|
121
227
|
|
|
122
228
|
```bash
|
|
123
|
-
|
|
124
|
-
|
|
229
|
+
git add .
|
|
230
|
+
git commit -m "feat: setup orchestrator"
|
|
231
|
+
git remote add origin <your-orchestrator-repo-url>
|
|
232
|
+
git push -u origin main
|
|
125
233
|
```
|
|
126
234
|
|
|
127
|
-
|
|
128
|
-
1. Read your `context-manifest.json`.
|
|
129
|
-
2. Look for your repositories in the `base_path` you configured.
|
|
130
|
-
3. If a repository isn't found and `auto_clone` is true, it will clone it for you.
|
|
131
|
-
4. Create a new, isolated workspace in the orchestrator (e.g., `orchestrator/.sessions/FIN-123/`).
|
|
132
|
-
5. Use `git worktree` to efficiently check out a new feature branch for each selected repository into the workspace.
|
|
235
|
+
---
|
|
133
236
|
|
|
134
|
-
|
|
237
|
+
### Daily Development
|
|
135
238
|
|
|
136
|
-
|
|
239
|
+
#### Start Feature
|
|
137
240
|
|
|
138
241
|
```bash
|
|
139
|
-
#
|
|
140
|
-
npx context-first-cli@latest feature
|
|
242
|
+
# From orchestrator directory
|
|
243
|
+
npx context-first-cli@latest feature start FIN-123
|
|
244
|
+
```
|
|
141
245
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
246
|
+
**What happens**:
|
|
247
|
+
1. Creates `.sessions/FIN-123/`
|
|
248
|
+
2. Creates git worktrees for each repo
|
|
249
|
+
3. Generates `docker-compose.yml` with ports 3123, 8123, 5523, 6423
|
|
250
|
+
4. Ready to work!
|
|
145
251
|
|
|
146
|
-
|
|
147
|
-
cd orchestrator/.sessions/FIN-123/
|
|
148
|
-
npx context-first-cli@latest status
|
|
252
|
+
#### Enter Workspace
|
|
149
253
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
# 1. Merge feature/FIN-123 into main (or specified target branch)
|
|
154
|
-
# 2. Push changes to remote
|
|
155
|
-
# 3. Delete feature branch
|
|
156
|
-
# 4. Clean up workspace
|
|
254
|
+
```bash
|
|
255
|
+
cd .sessions/FIN-123
|
|
256
|
+
```
|
|
157
257
|
|
|
158
|
-
|
|
159
|
-
|
|
258
|
+
#### Start Services (Optional)
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
docker-compose up -d
|
|
160
262
|
```
|
|
161
263
|
|
|
162
|
-
**
|
|
264
|
+
**Access**:
|
|
265
|
+
- Backend: `http://localhost:3123`
|
|
266
|
+
- Frontend: `http://localhost:8123`
|
|
267
|
+
- Postgres: `localhost:5523`
|
|
268
|
+
- Redis: `localhost:6423`
|
|
269
|
+
|
|
270
|
+
#### Work on Feature
|
|
271
|
+
|
|
163
272
|
```bash
|
|
164
|
-
#
|
|
165
|
-
|
|
273
|
+
# Open in editor
|
|
274
|
+
code .
|
|
166
275
|
|
|
167
|
-
#
|
|
168
|
-
|
|
276
|
+
# Use AI commands (if configured)
|
|
277
|
+
/start # Create context.md and architecture.md
|
|
278
|
+
/plan # Create plan.md
|
|
279
|
+
/work # Implement feature
|
|
280
|
+
/pre-pr # Review before PR
|
|
281
|
+
/pr # Create pull request
|
|
282
|
+
```
|
|
169
283
|
|
|
170
|
-
|
|
171
|
-
npx context-first-cli@latest feature merge FIN-123 --keep-workspace
|
|
284
|
+
#### Stop Services
|
|
172
285
|
|
|
173
|
-
|
|
174
|
-
|
|
286
|
+
```bash
|
|
287
|
+
docker-compose down
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
#### Finish Feature
|
|
291
|
+
|
|
292
|
+
**Option 1: Merge via CLI**
|
|
293
|
+
```bash
|
|
294
|
+
# From orchestrator directory
|
|
295
|
+
npx context-first-cli@latest feature merge FIN-123
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
**Option 2: Merge via GitHub + Clean Up**
|
|
299
|
+
```bash
|
|
300
|
+
# 1. Create PR via /pr command or manually
|
|
301
|
+
# 2. Merge PR on GitHub
|
|
302
|
+
# 3. Clean up workspace
|
|
303
|
+
npx context-first-cli@latest feature end FIN-123
|
|
175
304
|
```
|
|
176
305
|
|
|
177
306
|
---
|
|
178
307
|
|
|
179
|
-
##
|
|
308
|
+
## Docker Support
|
|
309
|
+
|
|
310
|
+
### Automatic Generation
|
|
180
311
|
|
|
181
|
-
|
|
182
|
-
graph TD
|
|
183
|
-
subgraph User Machine
|
|
184
|
-
Dev[Developer] -->|uses| CLI[context-cli]
|
|
185
|
-
end
|
|
312
|
+
When you run `feature start`, the CLI generates `docker-compose.yml` with:
|
|
186
313
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
314
|
+
- **Backend** (if `role: "backend"` exists)
|
|
315
|
+
- **Frontend** (if `role: "frontend"` exists)
|
|
316
|
+
- **PostgreSQL** (always included)
|
|
317
|
+
- **Redis** (always included)
|
|
191
318
|
|
|
192
|
-
|
|
193
|
-
style Orchestrator fill:#cde,stroke:#333,stroke-width:2px
|
|
194
|
-
Manifest[context-manifest.json<br/>Repository definitions]
|
|
195
|
-
Commands[.claude/commands/<br/>AI command definitions]
|
|
196
|
-
Props[ai.properties.md<br/>Local configuration]
|
|
197
|
-
end
|
|
319
|
+
### Dynamic Ports
|
|
198
320
|
|
|
199
|
-
|
|
200
|
-
style Workspace fill:#f9f,stroke:#333,stroke-width:2px
|
|
201
|
-
WT1[metaspecs/<br/>git worktree]
|
|
202
|
-
WT2[backend/<br/>git worktree]
|
|
203
|
-
WT3[frontend/<br/>git worktree]
|
|
204
|
-
end
|
|
321
|
+
Ports are calculated from issue number:
|
|
205
322
|
|
|
206
|
-
CLI -->|reads| Manifest
|
|
207
|
-
CLI -->|creates/manages| Workspace
|
|
208
323
|
```
|
|
324
|
+
FIN-11: Backend 3011, Frontend 8011, Postgres 5411, Redis 6311
|
|
325
|
+
FIN-123: Backend 3123, Frontend 8123, Postgres 5523, Redis 6423
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
**Benefit**: Run multiple workspaces simultaneously without conflicts!
|
|
329
|
+
|
|
330
|
+
### Configuration
|
|
331
|
+
|
|
332
|
+
Edit `ai.properties.md` to customize base ports:
|
|
333
|
+
|
|
334
|
+
```markdown
|
|
335
|
+
## Docker Configuration
|
|
336
|
+
|
|
337
|
+
docker.backend_base_port=3000
|
|
338
|
+
docker.frontend_base_port=8000
|
|
339
|
+
docker.postgres_base_port=5400
|
|
340
|
+
docker.redis_base_port=6300
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
### Example `docker-compose.yml`
|
|
344
|
+
|
|
345
|
+
```yaml
|
|
346
|
+
version: '3.8'
|
|
347
|
+
|
|
348
|
+
services:
|
|
349
|
+
backend:
|
|
350
|
+
build: ./backend
|
|
351
|
+
ports:
|
|
352
|
+
- "3011:3000"
|
|
353
|
+
environment:
|
|
354
|
+
- DATABASE_URL=postgresql://user:password@postgres:5432/app
|
|
355
|
+
networks:
|
|
356
|
+
- fin-11-network
|
|
357
|
+
|
|
358
|
+
frontend:
|
|
359
|
+
build: ./frontend
|
|
360
|
+
ports:
|
|
361
|
+
- "8011:8080"
|
|
362
|
+
environment:
|
|
363
|
+
- VITE_API_URL=http://localhost:3011
|
|
364
|
+
networks:
|
|
365
|
+
- fin-11-network
|
|
366
|
+
|
|
367
|
+
postgres:
|
|
368
|
+
image: postgres:15-alpine
|
|
369
|
+
ports:
|
|
370
|
+
- "5411:5432"
|
|
371
|
+
networks:
|
|
372
|
+
- fin-11-network
|
|
373
|
+
|
|
374
|
+
redis:
|
|
375
|
+
image: redis:7-alpine
|
|
376
|
+
ports:
|
|
377
|
+
- "6311:6379"
|
|
378
|
+
networks:
|
|
379
|
+
- fin-11-network
|
|
380
|
+
|
|
381
|
+
networks:
|
|
382
|
+
fin-11-network:
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
---
|
|
386
|
+
|
|
387
|
+
## Architecture
|
|
209
388
|
|
|
210
|
-
|
|
389
|
+
```
|
|
390
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
391
|
+
│ Developer Machine │
|
|
392
|
+
│ │
|
|
393
|
+
│ ┌───────────────┐ │
|
|
394
|
+
│ │ context-cli │ (Universal CLI) │
|
|
395
|
+
│ └───────┬───────┘ │
|
|
396
|
+
│ │ │
|
|
397
|
+
│ ├─────────────────────────────────────────┐ │
|
|
398
|
+
│ │ │ │
|
|
399
|
+
│ ┌───────▼────────────────────────┐ ┌───────▼─────┐ │
|
|
400
|
+
│ │ Orchestrator Repository │ │ Workspaces │ │
|
|
401
|
+
│ │ │ │ │ │
|
|
402
|
+
│ │ • context-manifest.json │ │ FIN-11/ │ │
|
|
403
|
+
│ │ • .claude/commands/ │ │ FIN-12/ │ │
|
|
404
|
+
│ │ • ai.properties.md │ │ FIN-13/ │ │
|
|
405
|
+
│ └─────────────────────────────────┘ └─────────────┘ │
|
|
406
|
+
│ │
|
|
407
|
+
└───────────────────────────────────────────────────────────────┘
|
|
408
|
+
|
|
409
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
410
|
+
│ Main Repositories │
|
|
411
|
+
│ │
|
|
412
|
+
│ ~/dev/backend/ (main branch) │
|
|
413
|
+
│ ~/dev/frontend/ (main branch) │
|
|
414
|
+
│ ~/dev/metaspecs/ (main branch) │
|
|
415
|
+
│ │
|
|
416
|
+
└─────────────────────────────────────────────────────────────┘
|
|
417
|
+
```
|
|
211
418
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
419
|
+
**Flow**:
|
|
420
|
+
1. CLI reads orchestrator configuration
|
|
421
|
+
2. Creates workspace with worktrees
|
|
422
|
+
3. Worktrees link to main repositories
|
|
423
|
+
4. Developer works in isolated workspace
|
|
424
|
+
5. Changes pushed to main repositories
|
|
215
425
|
|
|
216
426
|
---
|
|
217
427
|
|
|
218
|
-
##
|
|
428
|
+
## Examples
|
|
429
|
+
|
|
430
|
+
### Example 1: Complete Setup
|
|
219
431
|
|
|
220
432
|
```bash
|
|
221
|
-
#
|
|
433
|
+
# Create orchestrator
|
|
222
434
|
npx context-first-cli@latest create:orchestrator
|
|
223
|
-
#
|
|
435
|
+
# Name: my-saas-orchestrator
|
|
436
|
+
# Description: SaaS project orchestrator
|
|
224
437
|
|
|
225
|
-
#
|
|
438
|
+
# Configure
|
|
226
439
|
cd my-saas-orchestrator/
|
|
227
440
|
npx context-first-cli@latest config:setup
|
|
228
441
|
# Base path: ~/dev
|
|
229
442
|
# Auto-clone: Yes
|
|
443
|
+
# Task manager: Jira
|
|
444
|
+
# Jira site: https://mycompany.atlassian.net
|
|
445
|
+
# Jira project: SAAS
|
|
230
446
|
|
|
231
|
-
#
|
|
447
|
+
# Add repositories
|
|
232
448
|
npx context-first-cli@latest add:repo
|
|
233
|
-
#
|
|
449
|
+
# Folder name: my-saas-backend
|
|
450
|
+
# URL: git@github.com:myorg/my-saas-backend.git
|
|
451
|
+
# Role: backend
|
|
234
452
|
|
|
235
453
|
npx context-first-cli@latest add:repo
|
|
236
|
-
#
|
|
454
|
+
# Folder name: my-saas-frontend
|
|
455
|
+
# URL: git@github.com:myorg/my-saas-frontend.git
|
|
456
|
+
# Role: frontend
|
|
237
457
|
|
|
238
|
-
#
|
|
458
|
+
# Commit
|
|
239
459
|
git add .
|
|
240
|
-
git commit -m "feat:
|
|
241
|
-
git remote add origin git@github.com:myorg/my-saas-orchestrator.git
|
|
460
|
+
git commit -m "feat: setup orchestrator"
|
|
242
461
|
git push -u origin main
|
|
462
|
+
```
|
|
243
463
|
|
|
244
|
-
|
|
245
|
-
# (Make sure your repos like 'my-saas-backend' exist in '~/dev' or enable auto_clone)
|
|
246
|
-
npx context-first-cli@latest feature start PROJ-123
|
|
464
|
+
### Example 2: Working on Feature
|
|
247
465
|
|
|
248
|
-
|
|
249
|
-
|
|
466
|
+
```bash
|
|
467
|
+
# Start feature
|
|
468
|
+
npx context-first-cli@latest feature start SAAS-456
|
|
469
|
+
|
|
470
|
+
# Enter workspace
|
|
471
|
+
cd .sessions/SAAS-456
|
|
472
|
+
|
|
473
|
+
# Start services
|
|
474
|
+
docker-compose up -d
|
|
475
|
+
|
|
476
|
+
# Work
|
|
250
477
|
code .
|
|
251
|
-
|
|
478
|
+
|
|
479
|
+
# Stop services
|
|
480
|
+
docker-compose down
|
|
481
|
+
|
|
482
|
+
# Merge and clean up
|
|
483
|
+
cd ../..
|
|
484
|
+
npx context-first-cli@latest feature merge SAAS-456
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
### Example 3: Parallel Development
|
|
488
|
+
|
|
489
|
+
```bash
|
|
490
|
+
# Developer working on two features simultaneously
|
|
491
|
+
|
|
492
|
+
# Feature 1
|
|
493
|
+
npx context-first-cli@latest feature start FIN-11
|
|
494
|
+
cd .sessions/FIN-11
|
|
495
|
+
docker-compose up -d
|
|
496
|
+
# Backend at http://localhost:3011
|
|
497
|
+
|
|
498
|
+
# Feature 2 (in another terminal)
|
|
499
|
+
cd ~/my-orchestrator
|
|
500
|
+
npx context-first-cli@latest feature start FIN-12
|
|
501
|
+
cd .sessions/FIN-12
|
|
502
|
+
docker-compose up -d
|
|
503
|
+
# Backend at http://localhost:3012
|
|
504
|
+
|
|
505
|
+
# Both running simultaneously! No conflicts!
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
---
|
|
509
|
+
|
|
510
|
+
## Troubleshooting
|
|
511
|
+
|
|
512
|
+
### Issue: "Workspace already exists"
|
|
513
|
+
|
|
514
|
+
**Cause**: You already created a workspace for this issue.
|
|
515
|
+
|
|
516
|
+
**Solution**:
|
|
517
|
+
```bash
|
|
518
|
+
# Option 1: Use existing workspace
|
|
519
|
+
cd .sessions/FIN-123
|
|
520
|
+
|
|
521
|
+
# Option 2: Clean up and recreate
|
|
522
|
+
npx context-first-cli@latest feature end FIN-123
|
|
523
|
+
npx context-first-cli@latest feature start FIN-123
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
### Issue: "Repository not found"
|
|
527
|
+
|
|
528
|
+
**Cause**: Repository doesn't exist in `base_path`.
|
|
529
|
+
|
|
530
|
+
**Solution**:
|
|
531
|
+
```bash
|
|
532
|
+
# Option 1: Clone manually
|
|
533
|
+
cd ~/dev
|
|
534
|
+
git clone <repo-url> <repo-folder-name>
|
|
535
|
+
|
|
536
|
+
# Option 2: Enable auto_clone
|
|
537
|
+
# Edit ai.properties.md:
|
|
538
|
+
auto_clone=true
|
|
539
|
+
```
|
|
540
|
+
|
|
541
|
+
### Issue: "Branch already in use"
|
|
542
|
+
|
|
543
|
+
**Cause**: Main repository is on the feature branch.
|
|
544
|
+
|
|
545
|
+
**Solution**:
|
|
546
|
+
```bash
|
|
547
|
+
# Go to main repository
|
|
548
|
+
cd ~/dev/<repo-name>
|
|
549
|
+
|
|
550
|
+
# Switch to main branch
|
|
551
|
+
git checkout main
|
|
552
|
+
|
|
553
|
+
# Try again
|
|
554
|
+
cd ~/orchestrator
|
|
555
|
+
npx context-first-cli@latest feature start FIN-123
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
### Issue: "Port already in use"
|
|
559
|
+
|
|
560
|
+
**Cause**: Another workspace with same issue number is running.
|
|
561
|
+
|
|
562
|
+
**Solution**:
|
|
563
|
+
```bash
|
|
564
|
+
# Stop other workspace
|
|
565
|
+
cd .sessions/FIN-123
|
|
566
|
+
docker-compose down
|
|
567
|
+
|
|
568
|
+
# Or use different issue number
|
|
569
|
+
```
|
|
570
|
+
|
|
571
|
+
### Issue: "Docker containers not stopping"
|
|
572
|
+
|
|
573
|
+
**Cause**: `feature end` failed to stop containers.
|
|
574
|
+
|
|
575
|
+
**Solution**:
|
|
576
|
+
```bash
|
|
577
|
+
# Manually stop containers
|
|
578
|
+
cd .sessions/FIN-123
|
|
579
|
+
docker-compose down -v
|
|
580
|
+
|
|
581
|
+
# Then clean up workspace
|
|
582
|
+
cd ../..
|
|
583
|
+
npx context-first-cli@latest feature end FIN-123
|
|
584
|
+
```
|
|
585
|
+
|
|
586
|
+
---
|
|
587
|
+
|
|
588
|
+
## Advanced Usage
|
|
589
|
+
|
|
590
|
+
### Custom Docker Ports
|
|
591
|
+
|
|
592
|
+
Edit `ai.properties.md`:
|
|
593
|
+
|
|
594
|
+
```markdown
|
|
595
|
+
docker.backend_base_port=4000
|
|
596
|
+
docker.frontend_base_port=9000
|
|
597
|
+
docker.postgres_base_port=6000
|
|
598
|
+
docker.redis_base_port=7000
|
|
599
|
+
```
|
|
600
|
+
|
|
601
|
+
Now FIN-11 will use ports 4011, 9011, 6011, 7011.
|
|
602
|
+
|
|
603
|
+
### Merge Options
|
|
604
|
+
|
|
605
|
+
```bash
|
|
606
|
+
# Merge to develop instead of main
|
|
607
|
+
npx context-first-cli@latest feature merge FIN-123 --target-branch develop
|
|
608
|
+
|
|
609
|
+
# Merge without pushing (review first)
|
|
610
|
+
npx context-first-cli@latest feature merge FIN-123 --no-push
|
|
611
|
+
|
|
612
|
+
# Keep workspace after merge
|
|
613
|
+
npx context-first-cli@latest feature merge FIN-123 --keep-workspace
|
|
614
|
+
|
|
615
|
+
# Force merge without confirmation
|
|
616
|
+
npx context-first-cli@latest feature merge FIN-123 --force
|
|
252
617
|
```
|
|
253
618
|
|
|
619
|
+
### Update Commands
|
|
620
|
+
|
|
621
|
+
When CLI is updated, refresh AI command templates:
|
|
622
|
+
|
|
623
|
+
```bash
|
|
624
|
+
cd ~/orchestrator
|
|
625
|
+
npx context-first-cli@latest update:commands
|
|
626
|
+
```
|
|
627
|
+
|
|
628
|
+
---
|
|
629
|
+
|
|
630
|
+
## Contributing
|
|
631
|
+
|
|
632
|
+
Contributions are welcome! Please open an issue or PR on [GitHub](https://github.com/thatix-io/context-first-cli).
|
|
633
|
+
|
|
254
634
|
---
|
|
255
635
|
|
|
256
|
-
##
|
|
636
|
+
## License
|
|
257
637
|
|
|
258
|
-
MIT
|
|
638
|
+
MIT © [Thiago Abreu](https://github.com/thatix-io)
|
|
259
639
|
|
|
260
640
|
---
|
|
261
641
|
|
|
262
|
-
##
|
|
642
|
+
## Links
|
|
643
|
+
|
|
644
|
+
- **NPM**: https://www.npmjs.com/package/context-first-cli
|
|
645
|
+
- **GitHub**: https://github.com/thatix-io/context-first-cli
|
|
646
|
+
- **Issues**: https://github.com/thatix-io/context-first-cli/issues
|
|
647
|
+
- **Documentation**: https://github.com/thatix-io/context-first-cli#readme
|
|
648
|
+
|
|
649
|
+
---
|
|
263
650
|
|
|
264
|
-
|
|
265
|
-
- **GitHub Repository**: https://github.com/thatix-io/context-first-cli
|
|
266
|
-
- **Issues & Support**: https://github.com/thatix-io/context-first-cli/issues
|
|
651
|
+
**Made with ❤️ for developers who value context and efficiency.**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-setup.d.ts","sourceRoot":"","sources":["../../src/commands/config-setup.ts"],"names":[],"mappings":"AAqBA,wBAAsB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"config-setup.d.ts","sourceRoot":"","sources":["../../src/commands/config-setup.ts"],"names":[],"mappings":"AAqBA,wBAAsB,kBAAkB,kBAyKvC"}
|
|
@@ -123,6 +123,13 @@ async function configSetupCommand() {
|
|
|
123
123
|
else if (taskAnswers.taskManager === 'github') {
|
|
124
124
|
content += `github_repo=${taskAnswers.githubRepo}\n`;
|
|
125
125
|
}
|
|
126
|
+
content += `\n## Docker Configuration\n\n`;
|
|
127
|
+
content += `# Base ports for services (will be incremented by issue number)\n`;
|
|
128
|
+
content += `# Example: For FIN-11, backend will use port 3011, frontend 8011, etc.\n`;
|
|
129
|
+
content += `docker.backend_base_port=3000\n`;
|
|
130
|
+
content += `docker.frontend_base_port=8000\n`;
|
|
131
|
+
content += `docker.postgres_base_port=5400\n`;
|
|
132
|
+
content += `docker.redis_base_port=6300\n`;
|
|
126
133
|
content += `\n## Repository Commands\n\n`;
|
|
127
134
|
content += `# Define commands for each repository (lint, test, build, etc.)\n`;
|
|
128
135
|
content += `# Example:\n`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-setup.js","sourceRoot":"","sources":["../../src/commands/config-setup.ts"],"names":[],"mappings":";;;;;AAqBA,
|
|
1
|
+
{"version":3,"file":"config-setup.js","sourceRoot":"","sources":["../../src/commands/config-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../../src/commands/feature.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"feature.d.ts","sourceRoot":"","sources":["../../src/commands/feature.ts"],"names":[],"mappings":"AAoEA,eAAO,MAAM,eAAe;qBACH,MAAM,WAAW;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;;sBAiOlC,MAAM;sBAkBN,MAAM,WAAW;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;uBAuFnC,MAAM;qBAiDR,MAAM,WAAW;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;mBA4HxG,MAAM,WAAW;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI1D,CAAC"}
|
package/dist/commands/feature.js
CHANGED
|
@@ -11,6 +11,7 @@ const inquirer_1 = __importDefault(require("inquirer"));
|
|
|
11
11
|
const config_1 = require("../utils/config");
|
|
12
12
|
const git_1 = require("../utils/git");
|
|
13
13
|
const ai_properties_1 = require("../utils/ai-properties");
|
|
14
|
+
const docker_1 = require("../utils/docker");
|
|
14
15
|
/**
|
|
15
16
|
* Get orchestrator path from config
|
|
16
17
|
*/
|
|
@@ -186,11 +187,15 @@ exports.featureCommands = {
|
|
|
186
187
|
status: 'active',
|
|
187
188
|
};
|
|
188
189
|
await (0, config_1.saveWorkspaceMetadata)(workspacePath, metadata);
|
|
190
|
+
// Generate docker-compose.yml
|
|
191
|
+
console.log(chalk_1.default.blue('\nGenerating docker-compose.yml...'));
|
|
192
|
+
await (0, docker_1.generateDockerCompose)(workspacePath, issueId, selectedRepos);
|
|
189
193
|
console.log(chalk_1.default.green.bold('\n✅ Workspace created successfully!'));
|
|
190
194
|
console.log(chalk_1.default.blue('\n📁 Workspace location:'));
|
|
191
195
|
console.log(chalk_1.default.white(` ${workspacePath}`));
|
|
192
196
|
console.log(chalk_1.default.blue('\n💡 Next steps:'));
|
|
193
197
|
console.log(chalk_1.default.gray(` cd ${workspacePath}`));
|
|
198
|
+
console.log(chalk_1.default.gray(' docker-compose up -d # Start services'));
|
|
194
199
|
console.log(chalk_1.default.gray(' code .'));
|
|
195
200
|
console.log(chalk_1.default.gray(' # Start working on your feature!'));
|
|
196
201
|
},
|
|
@@ -276,6 +281,8 @@ exports.featureCommands = {
|
|
|
276
281
|
return;
|
|
277
282
|
}
|
|
278
283
|
}
|
|
284
|
+
// Cleanup Docker containers
|
|
285
|
+
await (0, docker_1.cleanupDockerContainers)(workspacePath, issueId);
|
|
279
286
|
// Remove worktrees
|
|
280
287
|
console.log(chalk_1.default.blue('Removing worktrees...'));
|
|
281
288
|
// Load ai.properties to get base_path
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature.js","sourceRoot":"","sources":["../../src/commands/feature.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"feature.js","sourceRoot":"","sources":["../../src/commands/feature.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extract issue number from issue-id
|
|
3
|
+
* Examples: FIN-11 → 11, PROJ-123 → 123
|
|
4
|
+
*/
|
|
5
|
+
export declare function extractIssueNumber(issueId: string): number;
|
|
6
|
+
/**
|
|
7
|
+
* Calculate dynamic ports based on issue number
|
|
8
|
+
*/
|
|
9
|
+
export declare function calculatePorts(issueNumber: number, basePorts: {
|
|
10
|
+
backend?: number;
|
|
11
|
+
frontend?: number;
|
|
12
|
+
postgres?: number;
|
|
13
|
+
redis?: number;
|
|
14
|
+
}): {
|
|
15
|
+
backend: number;
|
|
16
|
+
frontend: number;
|
|
17
|
+
postgres: number;
|
|
18
|
+
redis: number;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Generate docker-compose.yml content
|
|
22
|
+
*/
|
|
23
|
+
export declare function generateDockerComposeContent(issueId: string, repositories: Array<{
|
|
24
|
+
id: string;
|
|
25
|
+
role?: string;
|
|
26
|
+
}>, ports: {
|
|
27
|
+
backend: number;
|
|
28
|
+
frontend: number;
|
|
29
|
+
postgres: number;
|
|
30
|
+
redis: number;
|
|
31
|
+
}): string;
|
|
32
|
+
/**
|
|
33
|
+
* Generate docker-compose.yml file in workspace
|
|
34
|
+
*/
|
|
35
|
+
export declare function generateDockerCompose(workspacePath: string, issueId: string, repositories: Array<{
|
|
36
|
+
id: string;
|
|
37
|
+
role?: string;
|
|
38
|
+
}>, basePorts?: {
|
|
39
|
+
backend?: number;
|
|
40
|
+
frontend?: number;
|
|
41
|
+
postgres?: number;
|
|
42
|
+
redis?: number;
|
|
43
|
+
}): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Stop and remove Docker containers for a workspace
|
|
46
|
+
*/
|
|
47
|
+
export declare function cleanupDockerContainers(workspacePath: string, issueId: string): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Check if Docker is installed and running
|
|
50
|
+
*/
|
|
51
|
+
export declare function checkDockerAvailable(): Promise<boolean>;
|
|
52
|
+
//# sourceMappingURL=docker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/utils/docker.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,CAOA;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAClD,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5E,MAAM,CAwGR;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAClD,SAAS,CAAC,EAAE;IACV,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAQ7D"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.extractIssueNumber = extractIssueNumber;
|
|
7
|
+
exports.calculatePorts = calculatePorts;
|
|
8
|
+
exports.generateDockerComposeContent = generateDockerComposeContent;
|
|
9
|
+
exports.generateDockerCompose = generateDockerCompose;
|
|
10
|
+
exports.cleanupDockerContainers = cleanupDockerContainers;
|
|
11
|
+
exports.checkDockerAvailable = checkDockerAvailable;
|
|
12
|
+
const path_1 = __importDefault(require("path"));
|
|
13
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
14
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
15
|
+
const child_process_1 = require("child_process");
|
|
16
|
+
/**
|
|
17
|
+
* Extract issue number from issue-id
|
|
18
|
+
* Examples: FIN-11 → 11, PROJ-123 → 123
|
|
19
|
+
*/
|
|
20
|
+
function extractIssueNumber(issueId) {
|
|
21
|
+
const match = issueId.match(/\d+$/);
|
|
22
|
+
if (!match) {
|
|
23
|
+
throw new Error(`Could not extract number from issue-id: ${issueId}`);
|
|
24
|
+
}
|
|
25
|
+
return parseInt(match[0], 10);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Calculate dynamic ports based on issue number
|
|
29
|
+
*/
|
|
30
|
+
function calculatePorts(issueNumber, basePorts) {
|
|
31
|
+
return {
|
|
32
|
+
backend: (basePorts.backend || 3000) + issueNumber,
|
|
33
|
+
frontend: (basePorts.frontend || 8000) + issueNumber,
|
|
34
|
+
postgres: (basePorts.postgres || 5400) + issueNumber,
|
|
35
|
+
redis: (basePorts.redis || 6300) + issueNumber,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Generate docker-compose.yml content
|
|
40
|
+
*/
|
|
41
|
+
function generateDockerComposeContent(issueId, repositories, ports) {
|
|
42
|
+
const issueNumber = extractIssueNumber(issueId);
|
|
43
|
+
const networkName = `${issueId.toLowerCase()}-network`;
|
|
44
|
+
const volumePrefix = issueId.toLowerCase();
|
|
45
|
+
// Find repositories by role
|
|
46
|
+
const backendRepo = repositories.find(r => r.role === 'backend');
|
|
47
|
+
const frontendRepo = repositories.find(r => r.role === 'frontend');
|
|
48
|
+
let services = '';
|
|
49
|
+
let volumes = '';
|
|
50
|
+
// Backend service
|
|
51
|
+
if (backendRepo) {
|
|
52
|
+
services += ` backend:
|
|
53
|
+
build:
|
|
54
|
+
context: ./${backendRepo.id}
|
|
55
|
+
dockerfile: Dockerfile
|
|
56
|
+
container_name: ${issueId.toLowerCase()}-backend
|
|
57
|
+
ports:
|
|
58
|
+
- "${ports.backend}:3000"
|
|
59
|
+
environment:
|
|
60
|
+
- NODE_ENV=development
|
|
61
|
+
- PORT=3000
|
|
62
|
+
- DATABASE_URL=postgresql://user:password@postgres:5432/app
|
|
63
|
+
- REDIS_URL=redis://redis:6379
|
|
64
|
+
networks:
|
|
65
|
+
- ${networkName}
|
|
66
|
+
depends_on:
|
|
67
|
+
- postgres
|
|
68
|
+
- redis
|
|
69
|
+
volumes:
|
|
70
|
+
- ./${backendRepo.id}:/app
|
|
71
|
+
- /app/node_modules
|
|
72
|
+
|
|
73
|
+
`;
|
|
74
|
+
}
|
|
75
|
+
// Frontend service
|
|
76
|
+
if (frontendRepo) {
|
|
77
|
+
services += ` frontend:
|
|
78
|
+
build:
|
|
79
|
+
context: ./${frontendRepo.id}
|
|
80
|
+
dockerfile: Dockerfile
|
|
81
|
+
container_name: ${issueId.toLowerCase()}-frontend
|
|
82
|
+
ports:
|
|
83
|
+
- "${ports.frontend}:8080"
|
|
84
|
+
environment:
|
|
85
|
+
- NODE_ENV=development
|
|
86
|
+
- VITE_API_URL=http://localhost:${ports.backend}
|
|
87
|
+
networks:
|
|
88
|
+
- ${networkName}
|
|
89
|
+
${backendRepo ? 'depends_on:\n - backend' : ''}
|
|
90
|
+
volumes:
|
|
91
|
+
- ./${frontendRepo.id}:/app
|
|
92
|
+
- /app/node_modules
|
|
93
|
+
|
|
94
|
+
`;
|
|
95
|
+
}
|
|
96
|
+
// Postgres service
|
|
97
|
+
services += ` postgres:
|
|
98
|
+
image: postgres:15-alpine
|
|
99
|
+
container_name: ${issueId.toLowerCase()}-postgres
|
|
100
|
+
ports:
|
|
101
|
+
- "${ports.postgres}:5432"
|
|
102
|
+
environment:
|
|
103
|
+
- POSTGRES_USER=user
|
|
104
|
+
- POSTGRES_PASSWORD=password
|
|
105
|
+
- POSTGRES_DB=app
|
|
106
|
+
networks:
|
|
107
|
+
- ${networkName}
|
|
108
|
+
volumes:
|
|
109
|
+
- ${volumePrefix}-postgres-data:/var/lib/postgresql/data
|
|
110
|
+
|
|
111
|
+
`;
|
|
112
|
+
volumes += ` ${volumePrefix}-postgres-data:\n`;
|
|
113
|
+
// Redis service
|
|
114
|
+
services += ` redis:
|
|
115
|
+
image: redis:7-alpine
|
|
116
|
+
container_name: ${issueId.toLowerCase()}-redis
|
|
117
|
+
ports:
|
|
118
|
+
- "${ports.redis}:6379"
|
|
119
|
+
networks:
|
|
120
|
+
- ${networkName}
|
|
121
|
+
volumes:
|
|
122
|
+
- ${volumePrefix}-redis-data:/data
|
|
123
|
+
|
|
124
|
+
`;
|
|
125
|
+
volumes += ` ${volumePrefix}-redis-data:\n`;
|
|
126
|
+
return `version: '3.8'
|
|
127
|
+
|
|
128
|
+
services:
|
|
129
|
+
${services}
|
|
130
|
+
networks:
|
|
131
|
+
${networkName}:
|
|
132
|
+
name: ${networkName}
|
|
133
|
+
|
|
134
|
+
volumes:
|
|
135
|
+
${volumes}`;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Generate docker-compose.yml file in workspace
|
|
139
|
+
*/
|
|
140
|
+
async function generateDockerCompose(workspacePath, issueId, repositories, basePorts) {
|
|
141
|
+
try {
|
|
142
|
+
const issueNumber = extractIssueNumber(issueId);
|
|
143
|
+
const ports = calculatePorts(issueNumber, basePorts || {});
|
|
144
|
+
const content = generateDockerComposeContent(issueId, repositories, ports);
|
|
145
|
+
const filePath = path_1.default.join(workspacePath, 'docker-compose.yml');
|
|
146
|
+
await promises_1.default.writeFile(filePath, content, 'utf-8');
|
|
147
|
+
console.log(chalk_1.default.green(`✓ Generated docker-compose.yml`));
|
|
148
|
+
console.log(chalk_1.default.blue('\n📦 Docker Services:'));
|
|
149
|
+
console.log(chalk_1.default.gray(` Backend: http://localhost:${ports.backend}`));
|
|
150
|
+
console.log(chalk_1.default.gray(` Frontend: http://localhost:${ports.frontend}`));
|
|
151
|
+
console.log(chalk_1.default.gray(` Postgres: localhost:${ports.postgres}`));
|
|
152
|
+
console.log(chalk_1.default.gray(` Redis: localhost:${ports.redis}`));
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
console.log(chalk_1.default.yellow(`⚠ Could not generate docker-compose.yml: ${error.message}`));
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Stop and remove Docker containers for a workspace
|
|
160
|
+
*/
|
|
161
|
+
async function cleanupDockerContainers(workspacePath, issueId) {
|
|
162
|
+
try {
|
|
163
|
+
const dockerComposePath = path_1.default.join(workspacePath, 'docker-compose.yml');
|
|
164
|
+
// Check if docker-compose.yml exists
|
|
165
|
+
try {
|
|
166
|
+
await promises_1.default.access(dockerComposePath);
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
// No docker-compose.yml, nothing to clean up
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
console.log(chalk_1.default.blue('Stopping Docker containers...'));
|
|
173
|
+
try {
|
|
174
|
+
(0, child_process_1.execSync)('docker-compose down -v', {
|
|
175
|
+
cwd: workspacePath,
|
|
176
|
+
stdio: 'pipe',
|
|
177
|
+
});
|
|
178
|
+
console.log(chalk_1.default.green('✓ Docker containers stopped and removed'));
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
console.log(chalk_1.default.yellow(`⚠ Could not stop Docker containers: ${error.message}`));
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
console.log(chalk_1.default.yellow(`⚠ Error cleaning up Docker: ${error.message}`));
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Check if Docker is installed and running
|
|
190
|
+
*/
|
|
191
|
+
async function checkDockerAvailable() {
|
|
192
|
+
try {
|
|
193
|
+
(0, child_process_1.execSync)('docker --version', { stdio: 'pipe' });
|
|
194
|
+
(0, child_process_1.execSync)('docker ps', { stdio: 'pipe' });
|
|
195
|
+
return true;
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=docker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/utils/docker.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED