Skip to content

feat(config): rejestr zmiennych operatora + make configure - #38

Merged
mpasternak merged 2 commits into
mainfrom
feat/rejestr-zmiennych-operatora
Oct 21, 2026
Merged

mpasternak merged 2 commits into
mainfrom
feat/rejestr-zmiennych-operatora

Conversation

@mpasternak

Copy link
Copy Markdown
Member

Co

Jeden rejestr scripts/config-registry.tsv zmiennych .env, o których decyduje tylko operator (13 zmiennych w 6 grupach): e-mail admina, SSL, Slack, Rollbar, Google, backupy, widgety Freshdesk z iplweb/bpp#868 (DJANGO_BPP_FRESHDESK_WIDGET_ID, _ID_ANON, _JWT_SECRET).

Z rejestru korzystają:

Komenda Rola
make init-configs pyta przy instalacji (zastępuje własne pytania i ensure_env_var dla tych zmiennych)
make up / run / up-quick / refresh pyta raz o zmienne, których brak w .env
make configure menu grup, edycja, zapis na końcu (z), q porzuca
make config-check, make doctor (poz. 7) walidacja wartości
make docs-config-table tabela w docs/konfiguracja/zmienne.md (test pilnuje aktualności)

Semantyka „decyzji”

  • Decyzja = obecność zmiennej w .env. Pusta odpowiedź zapisuje VAR= (= wyłączone) i make up więcej nie pyta.
  • Przerwanie (EOF, timeout 120 s) niczego nie zapisuje, bo brak odpowiedzi nie jest decyzją.
  • Kreator nie pyta bez TTY i pod BPP_SKIP_HEALTH_GATE (autoupdate, run-with-warning, restore, upgrade-postgres) ani pod BPP_NO_CONFIG_PROMPT.
  • Sekrety są ukryte przy wpisywaniu i w podsumowaniu. Kreator odrzuca $ # " ' \ `` `` (.env czyta też Makefile i Compose).
  • Zapis zachowuje tryb i właściciela .env (mktemp 0600 + cat >, bez mv).

Zgodność wstecz

  • Świeży .env z init-configs ma ten sam zbiór zmiennych co przed zmianą, plus 3 zmienne Freshdeska (porównane przed i po).
  • Istniejący .env: dopisywane są tylko brakujące zmienne. Migracja DJANGO_BPP_BACKUP_DIR → DJANGO_BPP_HOST_BACKUP_DIR działa jak dotąd, a ADMINS i e-mail Let's Encrypt biorą świeżo podany e-mail admina.
  • Bez nowych wymaganych zmiennych: wszystkie mają wartości domyślne po stronie czytającej (Compose/Django).

Testy

  • tests/test_makefile.sh </dev/null: 403 passed, 0 failed, 1 skipped (skip: ścieżki Git Bash). Nowy test_configure_registry (32 asercje): spójność rejestru, --missing, menu, --check, --init, EOF/timeout, autoupdate, tryb 0600, aktualność tabeli w docs.
  • scripts/test-doctor.sh: 21/21.
  • mkdocs build --strict: OK.

🤖 Generated with Claude Code

mpasternak and others added 2 commits October 21, 2026 21:13
Jeden rejestr (scripts/config-registry.tsv) zmiennych .env, o ktorych
decyduje tylko operator: e-mail admina, SSL, Slack, Rollbar, Google,
backupy, widgety Freshdesk (iplweb/bpp#868: WIDGET_ID, WIDGET_ID_ANON,
WIDGET_JWT_SECRET). Korzystaja z niego:

- init-configs (--init) - zamiast wlasnych pytan i ensure_env_var,
- make up / up-quick / refresh (ask-missing-config) - pyta RAZ o brakujace;
  pusta odpowiedz zapisuje VAR= = decyzja "nie mamy", nie pyta ponownie;
  bez TTY / pod BPP_SKIP_HEALTH_GATE / BPP_NO_CONFIG_PROMPT nie pyta,
  timeout/EOF nic nie zapisuje,
- make configure - menu grup, zapis na koncu,
- make config-check + make doctor (pozycja 7) - walidacja wartosci,
- make docs-config-table - tabela w docs/konfiguracja/zmienne.md
  (test pilnuje aktualnosci).

Swiezy .env z init-configs ma ten sam zbior zmiennych co wczesniej
(+ 3 Freshdesk); migracja DJANGO_BPP_BACKUP_DIR dziala jak dotad.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ybu .env

- rej_wiersze i render-config-docs.sh zdejmuja \r: checkout na Windows bez
  .gitattributes daje CRLF, \r wpadal do OPIS, a znaczniki w docs nie
  pasowaly (render --check przechodzil wtedy zawsze — zweryfikowane mutacja).
- test trybu .env: GNU stat najpierw (GNU `stat -f` nie zawodzi, wiec
  fallback na BSD nigdy nie ruszal), porownanie przed/po zamiast 600
  (na Windows chmod nie dziala).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@mpasternak
mpasternak merged commit 24f09bd into main Oct 21, 2026
6 of 7 checks passed
@mpasternak
mpasternak deleted the feat/rejestr-zmiennych-operatora branch October 21, 2026 19:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant