Alle Fenster ueber drei gemeinsame Stellen, Selbstpruefung dazu

Die berechnete Fenstergroesse galt bisher nur fuer die Dialoge, die ich
dafuer einzeln angefasst hatte. Eine Pruefung des ganzen Projekts zeigte
zwei Luecken:
  * in common.sh gab es neun verstreute Aufrufstellen von dialog/whiptail
  * migrate_creator.sh hatte noch durchgehend feste Groessen
    (20 76 11, 10 76, 18 76, 14 76, 22 78, 8 76)

Beide Skripte rufen dialog/whiptail jetzt nur noch ueber drei Stellen auf:
  _ui_list  Listenfenster  (menu, checklist, radiolist)
  _ui_box   Textfenster    (msgbox, yesno, inputbox, passwordbox, infobox)
  _ui_file  Dateianzeige   (textbox)
Die berechnen die Groesse selbst. Damit stimmt sie auch fuer Fenster, die
spaeter dazukommen - man muss nur eine der ui_*-Huellen benutzen.

Neu: "cmk-manage.sh selftest" haelt das nach. Geprueft werden Syntax
aller vier Skripte, Dialoge an den Engstellen vorbei, fest eingetragene
Fenstergroessen, das Muster "[ ... ] && VAR=..." und die Vollstaendigkeit
der Einstellungstabelle gegenueber .env.example.

Der Lauf fand sofort 19 Altlasten des Musters "[ ... ] && VAR=...", das
hier schon dreimal einen stillen Abbruch verursacht hat - alle in
if-Bloecke umgeschrieben und stichprobenartig geprueft, auch die Faelle
mit case-Abschluss und Array-Zuweisung. Danach laeuft die Selbstpruefung
vollstaendig durch.

Regression: alle CLI-Kommandos, zwoelf Menuefunktionen und das Rendern
von sechs Fenstern unter whiptail in einem echten Pseudo-Terminal.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-20 17:48:12 +02:00
co-authored by Claude Opus 5
parent 9417f0c102
commit b4efbba050
5 changed files with 306 additions and 79 deletions
+22 -1
View File
@@ -1621,7 +1621,28 @@ Bedienung: Pfeiltasten, **Leertaste** markiert in Auswahllisten (z. B. mehrere
Sites für ein Backup), **Enter** bestätigt, **ESC/Cancel** geht zurück.
Die Fenstergröße richtet sich nach Terminalgröße, Textlänge und Anzahl der
Einträge – in einem größeren Terminal sind entsprechend mehr Einträge auf
einmal sichtbar.
einmal sichtbar. Das gilt für **alle** Fenster, auch in `migrate_creator.sh`:
sämtliche Dialoge laufen über drei gemeinsame Stellen in
[scripts/lib/common.sh](scripts/lib/common.sh), die die Größe selbst berechnen.
### 14.4 Selbstprüfung
```bash
./scripts/cmk-manage.sh selftest
```
Prüft die Skripte auf die Fallstricke, die sich hier als wiederkehrend
erwiesen haben:
| Prüfung | Warum |
|---|---|
| Syntax aller vier Skripte | Tippfehler fallen sofort auf |
| Dialoge gehen über die gemeinsamen Stellen | sonst hätte ein neues Fenster wieder eine feste Größe |
| keine fest eingetragenen Fenstergrößen | dito |
| kein `[ … ] && VAR=…` | liefert 1, wenn die Bedingung nicht zutrifft, und beendet unter `set -e` das Skript – dreimal die Ursache eines stillen Abbruchs |
| Einstellungstabelle vollständig | jeder Schlüssel hat sechs Felder und steht in `.env.example` |
Wer eigene Menüpunkte ergänzt, sollte den Aufruf danach einmal machen.
Es wird `dialog` bevorzugt; ist nur `whiptail` vorhanden, wird dieses genutzt.
Eine Dateiauswahl mit Verzeichnisnavigation ist eingebaut.