Files
stem-launcher/README.md
T
2026-04-26 09:39:02 +02:00

154 lines
3.2 KiB
Markdown

# RV Launcher
To repo zawiera launcher do workspace `rv`:
- `workspace.json` trzyma rooty workspace, socketow i toolingu
- `workspace.py` listuje serie i karty z dysku
- `workspace.py tmux-container ...` stawia sesje `tmux` z kontenerem w `pane 0`
- `doc/usage.md` opisuje przelaczniki CLI i format listowania
## Przygotowanie katalogu
Docelowy katalog:
```bash
~/dev/workspace/rv/tools/rv-launcher
```
Bootstrap bez `git clone`:
```bash
mkdir -p ~/dev/workspace/rv/tools
mkdir -p ~/dev/workspace/rv/tools/rv-launcher
cd ~/dev/workspace/rv/tools/rv-launcher
git init
```
## Autoryzacja
Masz dwie drogi.
### Droga 1: remote `r1` z tokenem w URL
To jest wariant dydaktyczny, jesli uczen ma cwiczyc reczne dodawanie remota z
tokenem do konkretnego zdalnego endpointu.
Przyklad:
```bash
git remote add r1 http://u1:TOKEN@77.90.8.171:3001/edu-tools/rv-launcher.git
git fetch r1 main
git switch --track -c main r1/main
```
Jesli po zajeciach uzytkownik bedzie chcial wyslac projekt na swoje konto
Gitea, lepiej dodac osobny remote `r2`, zamiast przepinac `r1`:
```bash
git remote add r2 http://LOGIN:TOKEN@77.90.8.171:3001/LOGIN/rv-launcher.git
git push -u r2 main
```
### Droga 2: lokalny `tokens/gitea_tokens.json`
To jest wariant alternatywny, wygodniejszy wtedy, gdy launcher ma sam wykonywac
`clone`, `fetch` i `push`, albo gdy uzytkownik po zajeciach chce pracowac juz na
wlasnych repo bez wpisywania tokena do kazdego remota.
Przed operacjami wymagajacymi autoryzacji dodaj lokalny token do:
```bash
~/dev/workspace/rv/tokens/gitea_tokens.json
```
Minimalny format:
```json
{
"users": {
"u1": {
"tokens": {
"t1": "TU_WSTAW_TOKEN"
}
}
}
}
```
Plik powinien byc lokalny, niewersjonowany i miec prawa `600`.
Przyklad:
```bash
mkdir -p ~/dev/workspace/rv/tokens
chmod 700 ~/dev/workspace/rv/tokens
chmod 600 ~/dev/workspace/rv/tokens/gitea_tokens.json
```
Jesli token jest trzymany tylko w `tokens/gitea_tokens.json`, remote `r1` moze
byc zapisany bez sekretu:
```bash
git remote add r1 http://77.90.8.171:3001/edu-tools/rv-launcher.git
```
## Fetch i switch
Domyslna galaz launchera to `main`.
Wariant preferowany przez `r1`:
```bash
git fetch r1 main
git switch --track -c main r1/main
git pull --ff-only r1 main
```
Jesli repo bylo sklonowane klasycznie i pracujesz przez `origin`, odpowiednikiem
jest:
```bash
git fetch origin main
git switch main
git pull --ff-only origin main
```
Jesli chcesz wejsc na inna galaz, na przyklad `feat/x`, uzyj:
```bash
git fetch r1 feat/x
git switch --track -c feat/x r1/feat/x
```
Wariant przez `origin`:
```bash
git fetch origin feat/x
git switch --track -c feat/x origin/feat/x
```
## Wariant alternatywny: `git clone`
Jesli celem nie jest cwiczenie `remote add` i `fetch`, mozna tez uzyc:
```bash
mkdir -p ~/dev/workspace/rv/tools
cd ~/dev/workspace/rv/tools
git clone http://77.90.8.171:3001/edu-tools/rv-launcher.git
cd rv-launcher
```
## Podstawowe komendy
Przyklady:
```bash
python3 workspace.py show-config
python3 workspace.py list-series
python3 workspace.py list-cards inf
python3 workspace.py tmux-container inf 03 --dry-run
python3 workspace.py tmux-container inf 03 --session rv-inf03 --attach
```
Skrypt nie trzyma listy kart w JSON-ie. Czyta `series/*/*` z `series_root`.