Read series from workspace manifest

This commit is contained in:
mpabi
2026-04-29 20:42:30 +02:00
parent cb1fc4d450
commit 170d8435aa
6 changed files with 475 additions and 116 deletions
+35 -9
View File
@@ -22,21 +22,24 @@ Typowy układ:
~/dev/edu/repos/rv/rv-launcher
~/dev/edu/repos/rv/rv32i-hazard3-env
~/dev/edu/repos/rv/series/<seria>/<karta>
~/dev/workspace/rv/meta/workspace-info
~/dev/workspace/rv/tools/rv-launcher
~/dev/workspace/rv/tools/rv32i-hazard3-env
~/dev/workspace/rv/series/<seria>/<karta>
```
`rvctl` czyta karty z `series_root` w workspace. Tool repo
`rv32i-hazard3-env` wybiera najpierw z workspace, a potem z fallbacku
`~/dev/edu/repos/rv`, jeśli taki klon roboczy jeszcze nie istnieje.
`rvctl` czyta publiczny opis serii i kart z `workspace-info`, a pobrane karty
trzyma w `series_root` w workspace. Tool repo `rv32i-hazard3-env` wybiera
najpierw z workspace, a potem z fallbacku `~/dev/edu/repos/rv`, jeśli taki klon
roboczy jeszcze nie istnieje.
Karty pracy też są rozdzielone:
Karty pracy są rozdzielone:
- `original_series_root` wskazuje repo źródłowe kart, na przykład `~/dev/edu/repos/rv/series`
- `series_root` wskazuje klony testowe w workspace, na przykład `~/dev/workspace/rv/series`
- `workspace_info_path` wskazuje manifest, na przykład `~/dev/workspace/rv/meta/workspace-info/workspace.json`
- `series_root` wskazuje klony robocze w workspace, na przykład `~/dev/workspace/rv/series`
- `original_series_root` zostaje fallbackiem dla lokalnych repo źródłowych
Komendy launchera pracują na `series_root`, czyli na klonach testowych.
Komendy launchera pracują na `series_root`, czyli na klonach roboczych.
## Pobranie repo i przełączenie gałęzi
@@ -203,6 +206,8 @@ Szczegółowy help parsera:
Komendy:
- `show-config`
- `workspace show`
- `workspace sync`
- `list-series`
- `list-cards [series]`
- `series list`
@@ -238,6 +243,9 @@ config_path<TAB>...
original_root<TAB>...
original_series_root<TAB>...
workspace_root<TAB>...
workspace_info_path<TAB>...
workspace_info_url<TAB>...
workspace_info_status<TAB>...
series_root<TAB>...
socket_root<TAB>...
token_path<TAB>...
@@ -259,10 +267,28 @@ Przykład:
./rvctl show-config
```
## `workspace show`
Pokazuje lokalizację i stan publicznego manifestu wspólnego workspace.
```bash
./rvctl workspace show
```
## `workspace sync`
Klonuje albo aktualizuje repo `edu-workspace/workspace-info` do katalogu
`~/dev/workspace/rv/meta/workspace-info`.
```bash
./rvctl workspace sync
./rvctl workspace sync --dry-run
```
## `series list`
Listuje serie dostępne w źródłach i workspace. Komenda tworzy `series_root`,
jeżeli katalog jeszcze nie istnieje.
Listuje serie dostępne w `workspace-info` i workspace. Komenda tworzy
`series_root`, jeżeli katalog jeszcze nie istnieje.
Format wyjścia:
+12 -8
View File
@@ -12,13 +12,15 @@ Komendy kart pracy dzielimy na trzy poziomy:
- `series cards tasks` - operacje na zadaniach w ramach karty
`rvctl` tworzy `series_root`, jeżeli katalog jeszcze nie istnieje. Lista serii
i kart może pochodzić z repo źródłowych, a `fetch` pobiera wybraną kartę do
workspace.
i kart pochodzi docelowo z publicznego manifestu
`~/dev/workspace/rv/meta/workspace-info/workspace.json`. Jeżeli manifestu nie
ma, narzędzie używa starego fallbacku przez `original_series_root`.
## Szybki przepływ
```bash
./rvctl tokens compare
./rvctl workspace sync
./rvctl series list
./rvctl series cards list inf
./rvctl series cards fetch inf bss
@@ -32,8 +34,9 @@ Dla karty `bss` właściwym repo jest `lab-rv32i-strlen-bss-data-stack`.
### `series list`
Listuje dostępne serie. Jeżeli `~/dev/workspace/rv/series` nie istnieje,
komenda tworzy ten katalog.
Listuje dostępne serie z manifestu `workspace-info` oraz liczbę kart już
pobranych do lokalnego workspace. Jeżeli `~/dev/workspace/rv/series` nie
istnieje, komenda tworzy ten katalog.
```bash
./rvctl series list
@@ -42,6 +45,7 @@ komenda tworzy ten katalog.
Typowy wynik:
```text
fiz 3 0
inf 3 0
```
@@ -147,10 +151,10 @@ Skrót dla domyślnej karty:
Przykładowy wynik:
```text
inf bss task1_bss ~/dev/workspace/rv/series/inf/lab-rv32i-strlen-bss-data-stack/src/tasks/task1_bss.s
inf bss task2_data ~/dev/workspace/rv/series/inf/lab-rv32i-strlen-bss-data-stack/src/tasks/task2_data.s
inf bss task3_stack_unused ~/dev/workspace/rv/series/inf/lab-rv32i-strlen-bss-data-stack/src/tasks/task3_stack_unused.s
inf bss task4_stack_strlen ~/dev/workspace/rv/series/inf/lab-rv32i-strlen-bss-data-stack/src/tasks/task4_stack_strlen.s
inf bss task1_bss ~/dev/workspace/rv/series/inf/lab-rv32i-strlen-bss-data-stack/src/tasks/task1_bss.c
inf bss task2_data ~/dev/workspace/rv/series/inf/lab-rv32i-strlen-bss-data-stack/src/tasks/task2_data.c
inf bss task3_stack_unused ~/dev/workspace/rv/series/inf/lab-rv32i-strlen-bss-data-stack/src/tasks/task3_stack_unused.c
inf bss task4_stack_strlen ~/dev/workspace/rv/series/inf/lab-rv32i-strlen-bss-data-stack/src/tasks/task4_stack_strlen.c
```
### `series cards tasks show SERIES CARD TASK`
+36 -1
View File
@@ -10,4 +10,39 @@ Publiczny entrypoint launchera:
```
Implementacja CLI znajduje się w `rvctl.py`. Plik `workspace.json` przechowuje
ścieżki workspace, series, socketów, tokenów i fallback do repo źródłowych.
lokalne ścieżki workspace, series, socketów, tokenów i adres publicznego
manifestu.
Publiczny manifest wspólnego workspace jest w repo:
```text
edu-workspace/workspace-info
```
Lokalna kopia manifestu znajduje się w:
```text
~/dev/workspace/rv/meta/workspace-info
```
Typowy układ:
```text
~/dev/workspace/rv
├── meta
│ └── workspace-info
├── tools
│ └── rv-launcher
├── tokens
│ └── tokens.json
└── series
```
`workspace-info` opisuje serie, karty, repo źródłowe, repo odpowiedzi i branche.
Nie przechowuje tokenów ani lokalnych plików roboczych ucznia.
Aktualizacja manifestu:
```bash
./rvctl workspace sync
```