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
+36 -8
View File
@@ -26,7 +26,9 @@ python3 rvctl.py "$@"
./rvctl.py
```
Ścieżki i domyślne ustawienia są trzymane w `workspace.json`.
Lokalne ścieżki i domyślne ustawienia są trzymane w `workspace.json`.
Publiczny opis wspólnego workspace, czyli serie, karty i wersje repozytoriów,
jest w osobnym repo `edu-workspace/workspace-info`.
## Co robi narzędzie
@@ -40,9 +42,10 @@ python3 rvctl.py "$@"
2. Listowanie i pobieranie kart pracy
`rvctl` czyta serie, karty i zadania z workspace, pomaga wybrać materiał do
pracy oraz przygotowuje remotes potrzebne do repo odpowiedzi. Docelowy model
namespace `series`, `cards` i `tasks` jest w `doc/series.md`.
`rvctl` czyta serie i karty z `meta/workspace-info`, zadania z pobranych
kart, pomaga wybrać materiał do pracy oraz przygotowuje remotes potrzebne do
repo odpowiedzi. Docelowy model namespace `series`, `cards` i `tasks` jest w
`doc/series.md`.
3. Uruchamianie środowiska programistycznego w kontenerach
@@ -108,6 +111,16 @@ Po tym kroku w workspace jest już repo launchera:
└── rv-launcher
```
Repo `workspace-info` trzymamy osobno od narzędzi, w katalogu `meta`:
```text
~/dev/workspace/rv
├── meta
│ └── workspace-info
└── tools
└── rv-launcher
```
Etap 3: wczytaj token z remota do lokalnego store:
```bash
@@ -283,6 +296,18 @@ Po konfiguracji tokenów najpierw sprawdź stan store:
./rvctl tokens compare
```
Następnie pobierz albo zaktualizuj publiczny manifest wspólnego workspace:
```bash
./rvctl workspace sync
```
Manifest trafia do:
```text
~/dev/workspace/rv/meta/workspace-info
```
Następnie wylistuj dostępne serie. Jeżeli katalog `series` w workspace jeszcze
nie istnieje, `rvctl` utworzy go automatycznie:
@@ -293,6 +318,7 @@ nie istnieje, `rvctl` utworzy go automatycznie:
Przykładowy wynik:
```text
fiz 3 0
inf 3 0
```
@@ -319,6 +345,8 @@ Karty trafiają do `series` w workspace:
```text
~/dev/workspace/rv
├── meta
│ └── workspace-info
├── tools
│ └── rv-launcher
├── tokens
@@ -351,10 +379,10 @@ karcie z `workspace.json`, czyli tutaj na `inf bss`:
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
```
Przełącz się na wybrane zadanie. `rvctl` bierze login ucznia ze store tokenów,