105 lines
2.7 KiB
Markdown
105 lines
2.7 KiB
Markdown
# RV Launcher
|
|
|
|
`rv-launcher` jest narzedziem do pracy z workspace RISC-V. Wlasciwym skryptem
|
|
CLI jest wykonywalny plik `rvctl.py`; to on implementuje listowanie serii i
|
|
kart, obsluge tokenow, przygotowanie repo odpowiedzi i start kontenera.
|
|
|
|
Publicznym entrypointem dla uzytkownika jest krotki wrapper:
|
|
|
|
```bash
|
|
./rvctl
|
|
```
|
|
|
|
Wrapper uruchamia `python3 rvctl.py "$@"`. `rvctl.py` mozna tez uruchomic
|
|
bezposrednio:
|
|
|
|
```bash
|
|
./rvctl.py
|
|
```
|
|
|
|
Sciezki i domyslne ustawienia sa trzymane w `workspace.json`.
|
|
|
|
## Co robi narzedzie
|
|
|
|
CLI porzadkuje prace w trzech obszarach.
|
|
|
|
1. Zarzadzanie tokenami
|
|
|
|
Narzedzie obsluguje lokalny store `tokens/tokens.json`, porownuje go z git
|
|
remotes i potrafi synchronizowac token w obie strony. Szczegoly modelu,
|
|
format pliku i opis komend sa w `doc/tokens.md`.
|
|
|
|
2. Listowanie i pobieranie kart pracy
|
|
|
|
`rvctl.py` czyta serie i karty z workspace, pomaga wybrac material do pracy
|
|
oraz przygotowuje remotes potrzebne do repo odpowiedzi. Szczegoly komend
|
|
`list-series`, `list-cards` i `submission` sa w `doc/rvctl.md`.
|
|
|
|
3. Uruchamianie srodowiska programistycznego w kontenerach
|
|
|
|
Dla wybranej karty `rvctl.py` uruchamia sesje tmux i kontener z przygotowanym
|
|
srodowiskiem developerskim. Szczegoly komendy `tmux-container` sa w
|
|
`doc/rvctl.md`.
|
|
|
|
## Model katalogow
|
|
|
|
Repozytoria zrodlowe trzymamy poza workspace:
|
|
|
|
```bash
|
|
~/dev/edu/repos/rv
|
|
```
|
|
|
|
Workspace sluzy do klonow roboczych, cwiczen, tokenow i socketow:
|
|
|
|
```bash
|
|
~/dev/workspace/rv
|
|
```
|
|
|
|
Typowy uklad:
|
|
|
|
```text
|
|
~/dev/edu/repos/rv/rv-launcher
|
|
~/dev/edu/repos/rv/rv32i-hazard3-env
|
|
~/dev/edu/repos/rv/series/<seria>/<karta>
|
|
~/dev/workspace/rv/tools/rv-launcher
|
|
~/dev/workspace/rv/tools/rv32i-hazard3-env
|
|
~/dev/workspace/rv/series/<seria>/<karta>
|
|
~/dev/workspace/rv/tokens/tokens.json
|
|
```
|
|
|
|
`rvctl.py` pracuje na kartach z `series_root` w workspace. Repo zrodlowe w
|
|
`~/dev/edu/repos/rv` sa punktem odniesienia i fallbackiem dla narzedzi.
|
|
|
|
## Szybki start
|
|
|
|
Najpierw zobacz konfiguracje i dostepne komendy:
|
|
|
|
```bash
|
|
./rvctl
|
|
./rvctl show-config
|
|
```
|
|
|
|
Typowy przeplyw pracy:
|
|
|
|
```bash
|
|
./rvctl tokens scan
|
|
./rvctl list-series
|
|
./rvctl list-cards inf
|
|
./rvctl tmux-container inf 03 --dry-run
|
|
./rvctl tmux-container inf 03 --session rv-inf03 --attach
|
|
./rvctl submission inf 03 --class 4i --nick u1
|
|
```
|
|
|
|
`--dry-run` jest przydatny przy sprawdzaniu planu uruchomienia lub konfiguracji
|
|
repo, zanim narzedzie cos zmieni.
|
|
|
|
## Dokumentacja
|
|
|
|
- `doc/rvctl.md` - komendy CLI, przelaczniki i przyklady uzycia
|
|
- `doc/tokens.md` - model tokenow, synchronizacja remote <-> store
|
|
- `doc/tokens.schema.json` - schemat `tokens/tokens.json`
|
|
- `doc/workspace.md` - krotki opis konfiguracji workspace
|
|
|
|
README jest tylko mapa projektu. Szczegoly operacyjne trzymamy w `doc/`, zeby
|
|
nie dublowac instrukcji w kilku miejscach.
|