Sjednotit pojmenování: kostky → dice-counter #18

Merged
david-spacil merged 4 commits from agents/claude/prejmenovani into main 2026-08-23 22:49:48 +02:00
Owner

První ze dvou kroků podle #16. Nová jména se zavádějí vedle starých, takže se nic běžícího nerozbije.

Nová jména

Kde Dnes Nově
PyInstaller kostky.spec, dist/kostky dice-counter.spec, dist/dice-counter
přílohy releasu kostky-linux-x86_64 … dice-counter-linux-x86_64 …
služba v LXC kostky.service dice-counter.service
cesty v LXC /opt/kostky, /var/lib/kostky /opt/dice-counter, /var/lib/dice-counter
uživatel kostky dice-counter
hostname LXC kostky dice-counter
instalační skript deploy/pve-kostky.sh deploy/pve-dice-counter.sh
datový adresář binárky ~/.local/share/kostky/ ~/.local/share/dice-counter/
co appka hlásí Kostky v1.2.1 dice-counter v1.2.2

Co drží staré instalace při životě

  • Přílohy se věší pod oběma jmény. Instalátory z dřívějška si chodí pro kostky-* a musí je najít.
  • Instalátor umí stáhnout obojí — nejdřív dice-counter-*, pak kostky-*. Bez toho by nešlo nainstalovat žádné z už vydaných vydání.
  • deploy/pve-kostky.sh zůstává jako přesměrování na nový soubor. Příkaz update v už založených kontejnerech chodí pro instalátor právě na tuhle adresu; kdyby zmizela, aktualizace by u nich přestala fungovat dřív, než se stihnou přemigrovat.
  • Kontejnery z dřívějška se přestěhují samy. Při první aktualizaci se stará služba zastaví a smaže, databáze se přesune z /var/lib/kostky, přepíše se vlastník a starý uživatel i domov jdou pryč. Historie her zůstává.
  • Binárka sáhne po staré databázi, dokud nová neexistuje — kdo hraje na notebooku, o rozehrané hry nepřijde.

Chyba, která se přitom našla

Byla tam už předtím a nesouvisí s přejmenováním: příkaz update si nový instalátor uloží do $HOME_DIR/install.sh a odtud ho pustí. Instalátor pak dělá

install -m 755 "$0" "$HOME_DIR/install.sh"

tedy kopíruje soubor sám na sebe. install na to řekne are the same file a skončí chybou — se set -e spadl celý update dřív, než stihl cokoli udělat.

Nevšimli jsme si toho, protože aktualizace se zatím pouštěla jen z uzlu Proxmoxu (MODE=update), kde $0 je poslaný soubor v /root, ne ten instalovaný. Ošetřeno testem -ef.

Jak je to ověřené

Testy: 119 prošlo (jeden nový na zálohu staré databáze).

Binárka postavená lokálně z přejmenovaného specu: --version hlásí dice-counter v1.2.2-zkouska, databáze přistane v …/dice-counter/dice.db, export se stahuje jako dice-counter-2026-08-23.db, patička sedí. Se starou databází vedle sebe se použije ta stará a hráči z ní jsou vidět.

Instalátor proběhl v kontejneru s debian:13 (systemd nahrazený atrapou) ve třech scénářích:

  1. Přechod ze staré instalace — a schválně spuštěný z /opt/kostky/install.sh, tedy z adresáře, který si během běhu sám smaže. Ověřeno: stará služba pryč, nová běží, databáze přestěhovaná i s obsahem a se správným vlastníkem, starý uživatel smazaný, /usr/bin/update míří na nové cesty a na nový skript, port odpovídá.
  2. Čistá instalace proti releasu, kde je jen kostky-linux-x86_64 — záložní jméno zabralo, žádné staré cesty ani uživatel nevznikly.
  3. Dvě spuštění za sebou — projde obojí (tady spadla ta chyba výš).

Přesměrování pve-kostky.sh je protažené přesně tím, co dělá update ve stávajících kontejnerech: curl na starou adresu → bash … instalator → bash -n. Výstup je bit po bitu tentýž jako z nového skriptu a na stdout nepřibyl ani řádek navíc — kdyby přibyl, bash -n by neprošel a update by tiše jel na starém instalátoru.

Co se schválně nedělá

  • Stará jména se neodstraňují. To je druhý krok, až budou instalace přemigrované. V kódu jsou označená komentářem „do vydání 1.2.x".
  • <title>Kostky</title> zůstává. Je to titulek stránky v české aplikaci, ne identifikátor; anglický slug by tam byl horší. Program se ale hlásí jménem, pod kterým se spouští — dice-counter v1.2.2 v banneru i v patičce.

Kvůli přílohám pod oběma jmény tohle projde naplno až příštím tagem. Do něj se veze i připnutí balíčku z #17.

Refs #16

První ze dvou kroků podle #16. Nová jména se zavádějí **vedle** starých, takže se nic běžícího nerozbije. ## Nová jména | Kde | Dnes | Nově | |---|---|---| | PyInstaller | `kostky.spec`, `dist/kostky` | `dice-counter.spec`, `dist/dice-counter` | | přílohy releasu | `kostky-linux-x86_64` … | `dice-counter-linux-x86_64` … | | služba v LXC | `kostky.service` | `dice-counter.service` | | cesty v LXC | `/opt/kostky`, `/var/lib/kostky` | `/opt/dice-counter`, `/var/lib/dice-counter` | | uživatel | `kostky` | `dice-counter` | | hostname LXC | `kostky` | `dice-counter` | | instalační skript | `deploy/pve-kostky.sh` | `deploy/pve-dice-counter.sh` | | datový adresář binárky | `~/.local/share/kostky/` | `~/.local/share/dice-counter/` | | co appka hlásí | `Kostky v1.2.1` | `dice-counter v1.2.2` | ## Co drží staré instalace při životě - **Přílohy se věší pod oběma jmény.** Instalátory z dřívějška si chodí pro `kostky-*` a musí je najít. - **Instalátor umí stáhnout obojí** — nejdřív `dice-counter-*`, pak `kostky-*`. Bez toho by nešlo nainstalovat žádné z už vydaných vydání. - **`deploy/pve-kostky.sh` zůstává** jako přesměrování na nový soubor. Příkaz `update` v už založených kontejnerech chodí pro instalátor právě na tuhle adresu; kdyby zmizela, aktualizace by u nich přestala fungovat dřív, než se stihnou přemigrovat. - **Kontejnery z dřívějška se přestěhují samy.** Při první aktualizaci se stará služba zastaví a smaže, databáze se přesune z `/var/lib/kostky`, přepíše se vlastník a starý uživatel i domov jdou pryč. Historie her zůstává. - **Binárka sáhne po staré databázi**, dokud nová neexistuje — kdo hraje na notebooku, o rozehrané hry nepřijde. ## Chyba, která se přitom našla Byla tam už předtím a nesouvisí s přejmenováním: příkaz `update` si nový instalátor uloží do `$HOME_DIR/install.sh` a **odtud ho pustí**. Instalátor pak dělá ```bash install -m 755 "$0" "$HOME_DIR/install.sh" ``` tedy kopíruje soubor sám na sebe. `install` na to řekne `are the same file` a skončí chybou — se `set -e` spadl celý `update` dřív, než stihl cokoli udělat. Nevšimli jsme si toho, protože aktualizace se zatím pouštěla jen z uzlu Proxmoxu (`MODE=update`), kde `$0` je poslaný soubor v `/root`, ne ten instalovaný. Ošetřeno testem `-ef`. ## Jak je to ověřené Testy: 119 prošlo (jeden nový na zálohu staré databáze). Binárka postavená lokálně z přejmenovaného specu: `--version` hlásí `dice-counter v1.2.2-zkouska`, databáze přistane v `…/dice-counter/dice.db`, export se stahuje jako `dice-counter-2026-08-23.db`, patička sedí. Se starou databází vedle sebe se použije ta stará a hráči z ní jsou vidět. Instalátor proběhl v kontejneru s `debian:13` (systemd nahrazený atrapou) ve třech scénářích: 1. **Přechod ze staré instalace** — a schválně spuštěný z `/opt/kostky/install.sh`, tedy z adresáře, který si během běhu sám smaže. Ověřeno: stará služba pryč, nová běží, databáze přestěhovaná i s obsahem a se správným vlastníkem, starý uživatel smazaný, `/usr/bin/update` míří na nové cesty a na nový skript, port odpovídá. 2. **Čistá instalace proti releasu, kde je jen `kostky-linux-x86_64`** — záložní jméno zabralo, žádné staré cesty ani uživatel nevznikly. 3. **Dvě spuštění za sebou** — projde obojí (tady spadla ta chyba výš). Přesměrování `pve-kostky.sh` je protažené přesně tím, co dělá `update` ve stávajících kontejnerech: `curl` na starou adresu → `bash … instalator` → `bash -n`. Výstup je bit po bitu tentýž jako z nového skriptu a na stdout nepřibyl ani řádek navíc — kdyby přibyl, `bash -n` by neprošel a `update` by tiše jel na starém instalátoru. ## Co se schválně nedělá - **Stará jména se neodstraňují.** To je druhý krok, až budou instalace přemigrované. V kódu jsou označená komentářem „do vydání 1.2.x". - **`<title>Kostky</title>` zůstává.** Je to titulek stránky v české aplikaci, ne identifikátor; anglický slug by tam byl horší. Program se ale hlásí jménem, pod kterým se spouští — `dice-counter v1.2.2` v banneru i v patičce. Kvůli přílohám pod oběma jmény tohle projde naplno až příštím tagem. Do něj se veze i připnutí balíčku z #17. Refs #16
david-spacil added 1 commit 2026-08-23 22:30:45 +02:00
Sjednotit pojmenování: kostky → dice-counter
binárka / linux (pull_request) Failing after 10s
image / image (pull_request) Successful in 7s
testy / pytest (3.11) (pull_request) Successful in 1s
testy / pytest (3.12) (pull_request) Successful in 1s
testy / pytest (3.13) (pull_request) Successful in 1s
testy / pytest (3.14) (pull_request) Successful in 1s
7449c01b14
Projekt se jmenuje dice-counter, ale skoro všude vystupoval jako kostky.
Tohle je první ze dvou kroků podle #16: nová jména se zavádějí vedle
starých, aby běžící instalace nic nerozbilo.

Nově:

    binárka a spec       dice-counter.spec, dist/dice-counter
    přílohy releasu      dice-counter-linux-x86_64 a spol.
    služba v LXC         dice-counter.service
    cesty v LXC          /opt/dice-counter, /var/lib/dice-counter
    uživatel             dice-counter
    hostname LXC         dice-counter
    instalátor           deploy/pve-dice-counter.sh
    datový adresář       ~/.local/share/dice-counter a obdoby
    co appka hlásí       "dice-counter <verze>" v banneru i v patičce

Stará jména zatím fungují dál:

  - Přílohy se na release věší pod oběma jmény.
  - Instalátor umí stáhnout i kostky-*, takže starší vydání jdou
    nainstalovat pořád.
  - deploy/pve-kostky.sh zůstává jako přesměrování — příkaz `update`
    v už založených kontejnerech chodí pro instalátor právě tam.
  - Kontejnery z dřívějška se při aktualizaci přestěhují samy: služba
    se přejmenuje a databáze se přesune do /var/lib/dice-counter, takže
    o historii her nikdo nepřijde.
  - Binárka sáhne po ~/.local/share/kostky/dice.db, dokud nová databáze
    neexistuje.

Při zkoušení přechodu vyplavala chyba, která tu byla už předtím: příkaz
`update` si nový instalátor uloží do $HOME_DIR/install.sh a odtud ho
pustí, takže `install -m 755 "$0" "$HOME_DIR/install.sh"` kopírovalo
soubor sám na sebe. install to odmítne, se `set -e` spadl celý update.
Ošetřeno testem `-ef`.

Ověřeno v debianím kontejneru: přechod ze staré instalace (včetně běhu
instalátoru z adresáře, který se během něj maže), čistá instalace, běh
proti releasu, kde je jen stará příloha, a druhé spuštění za sebou.

Refs #16
david-spacil added 1 commit 2026-08-23 22:32:43 +02:00
Nenechat zkoušku binárky viset na zbytku z minulého běhu
binárka / linux (pull_request) Successful in 10s
image / image (pull_request) Successful in 14s
testy / pytest (3.11) (pull_request) Successful in 2s
testy / pytest (3.12) (pull_request) Successful in 1s
testy / pytest (3.13) (pull_request) Successful in 0s
testy / pytest (3.14) (pull_request) Successful in 1s
6443a93955
Krok padl na `test -f /tmp/zkouska/dice-counter/dice.db`. Runner si /tmp
mezi běhy drží, takže tam po dřívějších stavbách zůstalo
/tmp/zkouska/kostky/dice.db — a binárka po něm nově sáhne, dokud nová
databáze neexistuje. Zkouška tedy hledala soubor, který se schválně
nezaložil.

Chová se to správně, jen se to nedá zkoušet na adresáři, do kterého si
sype každý běh. Nově dostane každý svůj vlastní přes mktemp a po sobě ho
uklidí.

Reprodukováno lokálně: se zbytkem po staru krok padne, s vlastním
adresářem projde.
david-spacil added 1 commit 2026-08-23 22:33:42 +02:00
Upřesnit komentář: nezmizí tři řádky, ale celý blok
binárka / linux (pull_request) Successful in 10s
image / image (pull_request) Successful in 7s
testy / pytest (3.11) (pull_request) Successful in 1s
testy / pytest (3.12) (pull_request) Successful in 0s
testy / pytest (3.13) (pull_request) Successful in 0s
testy / pytest (3.14) (pull_request) Successful in 1s
182d0a3fdc
david-spacil added 1 commit 2026-08-23 22:44:46 +02:00
Merge branch 'main' into agents/claude/prejmenovani
binárka / linux (pull_request) Successful in 11s
image / image (pull_request) Successful in 7s
testy / pytest (3.11) (pull_request) Successful in 1s
testy / pytest (3.12) (pull_request) Successful in 1s
testy / pytest (3.13) (pull_request) Successful in 1s
testy / pytest (3.14) (pull_request) Successful in 1s
4e526e8841
david-spacil merged commit 8e6e4a8fe9 into main 2026-08-23 22:49:48 +02:00
david-spacil deleted branch agents/claude/prejmenovani 2026-08-23 22:49:48 +02:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: david-spacil/dice-counter#18