feat(stack): converter docker run→compose (port REA modul 1) — 19 golden vektor + CLI tia-love convert
CI / test (push) Successful in 24s

This commit is contained in:
oxpoe committed 2026-10-16 01:42:02 +07:00
1 parent f555f27467
commit b84afdb494
11 files changed
+1519 -159

No files matched your search

+13 -5
View File
@@ -242,7 +242,7 @@ docker run -d --name web -p 8080:80 -v ./html:/usr/share/nginx/html:ro -e TZ=Asi
```
```yaml
services:
web:
nginx:
container_name: web
ports:
- 8080:80
@@ -544,6 +544,9 @@ networks:
| 7 | `-d` dan `--detach` sama-sama diabaikan senyap | Referensi inkonsisten (`-d` senyap, `--detach` komentar) |
| 8 | Tidak ada merge stdin; "tambah ke stack" ditangani layer stack (baca-tulis YAML compose) | Arsitektur tia: converter tetap murni string→string agar bisa dipakai TUI & CLI dengan hasil identik |
| 9 | Pesan error dibungkus i18n (F-023) | Prinsip tia; isi/arti error tetap sama |
| 10 | Image tidak ditemukan → **error jelas** (`docker run: image tidak ditemukan`) | Referensi menghasilkan service bernama `!!!invalid!!!` — error tegas lebih jujur untuk CLI & TUI |
| 11 | `--health-retries` ditulis sebagai integer | Skema compose mengharapkan int; referensi menulisnya sebagai string |
| 12 | Multi-perintah (beberapa `docker run` dalam satu input) belum didukung — menyusul | V16 ditahan sampai dukungan multi-command masuk |
## 10. Rencana Porting Go
@@ -572,7 +575,12 @@ Keputusan desain:
| Item | Status |
|---|---|
| Test vectors tertulis | ✅ (V1–V20) |
| Golden test di Go | ⬜ Fase 3 |
| Differential vs composerize (Node) | ⬜ Fase 3 — perlu `node`/`npm` di CI |
| Laporan paritas | ⬜ Fase 3 |
| Test vectors tertulis | ✅ (V1–V20; V16 menunggu multi-command) |
| Golden test di Go | ✅ **19 vektor hijau** — `internal/stack/converter_test.go` |
| Differential vs composerize (Node) | ⬜ lanjutan Fase 3 — perlu `node`/`npm` di CI |
| Laporan paritas | ⬜ lanjutan Fase 3 |
Catatan implementasi (ditemukan saat porting, 2026-10-16):
- V2 di dokumen ini salah tulis (service `web:` → seharusnya `nginx:`, sebab nama service dari image) — sudah diperbaiki; perilaku referensi mengikuti `getServiceName(image)`.
- `--mount ...,readonly` → `readonly: true` (diff #6) terbukti perlu di jalur MapArray.
- `res.Output` = teks siap cetak (komentar warning + YAML) — kontrak dipakai CLI `tia-love convert`.