Render token scan as compact token table

This commit is contained in:
mpabi
2026-04-26 20:49:35 +02:00
parent a9d0d0117a
commit 2885d3a4fa
4 changed files with 399 additions and 226 deletions
+21 -26
View File
@@ -292,44 +292,40 @@ Przyklady:
## `tokens scan`
Skanuje remote URL-e w repo oraz lokalny `tokens.json`, laczy wpisy w pary po
endpoincie i pokazuje, gdzie przechowywany jest token.
endpoincie, userze i wartosci tokena, a potem pokazuje jeden logiczny wiersz
na token.
Przelaczniki:
- `--repo PATH`
Sciezka wewnatrz docelowego repo. Domyslnie biezacy katalog.
- `--verbose`
Pokazuje dodatkowo sekcje `context` i `scan`.
Typowy wynik:
```text
items
item source id server scheme host port credential repo_user store_user token sync
---- ----------- ---------- ------ ------ --------------- ----- ---------- --------- ---------- ----- ----
1 repo r1 gitea http 77.90.8.171 3001 auth u1 u1 yes
1 tokens.json t1 gitea http 77.90.8.171 3001 store u1 u1 yes *
tokens
item server host org repo user remote token_ref token scope org repo
---- ------ ------------- --------- ----------- ---- ------ --------- ------------ ------ ------ ------
1 gitea 77.90.8.171 edu-tools rv-launcher u1 r1 t1 * e59cc...13be +---+ +++++ ++++
```
Jesli remote istnieje, ale ma URL bez `LOGIN:TOKEN@`, wynik bedzie mial
w wierszu `repo` wartosci `credential=plain` i `token=no`. Jezeli ten sam
endpoint istnieje w `tokens.json`, drugi wiersz tego samego `item` pokaze
`source=tokens.json`, `id=t1`, `store_user=u1` i `token=yes`.
`token_ref` jest komorka stalej szerokosci: nazwa tokena jest po lewej, a marker
po prawej. Marker `*` oznacza, ze token w remote i `tokens.json` jest zgodny
oraz uprawnienia zostaly wczytane. Marker `R` oznacza token tylko w remote, a
`S` token tylko w `tokens.json`.
Ten sam numer `item` oznacza jedna pare logiczna dla jednego endpointu. Wiersz
`source=repo` pokazuje stan remote, a wiersz `source=tokens.json` pokazuje stan
lokalnego store. Kolumna `sync` pokazuje `*` przy aktualnym zrodle prawdy dla
pary repo/store. Przy konflikcie pokazuje `!`.
Kolumna `id` pokazuje identyfikator miejsca przechowywania tokena: dla repo jest
to nazwa remota, na przyklad `r1`, a dla store nazwa tokenu, na przyklad `t1`.
Endpoint jest rozbity na `server`, `scheme`, `host` i `port`.
Maski uprawnien:
- `scope` ma pozycje `awrop`: `all`, `write:repository`, `read:repository`, organization scope, `public-only`
- `org` ma pozycje `oawrc`: owner, admin, write, read, create repo
- `repo` ma pozycje `oawr`: owner, admin, write, read
- `+` oznacza wlaczone, `-` wylaczone, `?` nie wczytano, `!` blad wczytania
Przyklad:
```bash
./rvctl tokens scan
./rvctl tokens scan --repo ~/dev/workspace/rv/series/inf/03
./rvctl tokens scan --verbose
```
## `tokens read`
@@ -385,15 +381,14 @@ item<TAB>value
repo_root<TAB>...
token_path<TAB>...
items
item source id server scheme host port credential repo_user store_user token sync
---- ----------- ---------- ------ ------ --------------- ----- ---------- --------- ---------- ----- ----
1 repo r1 gitea http 77.90.8.171 3001 plain u1 no
1 tokens.json t1 gitea http 77.90.8.171 3001 store u1 u1 yes *
tokens
item server host org repo user remote token_ref token scope org repo
---- ------ ------------- --------- ----------- ---- ------ --------- ------------ ------ ------ ------
1 gitea 77.90.8.171 edu-tools rv-launcher u1 r1 t1 * e59cc...13be +---+ +++++ ++++
status
item<TAB>value
store_ahead<TAB>1
in_sync<TAB>1
```
Przyklad: