fix(auth): scripts/auth/*.sh — правильный SNIPPET path

Bug: `dirname` x2 от $0 даёт `<repo>/scripts`, не `<repo>` →
скрипт ищет snippet в `<repo>/scripts/caddy/...` (не существует)
вместо `<repo>/caddy/users.caddy.snippet`.

Discovered 2026-05-26 QA RBAC сессия:
> grep: /opt/gendesign/scripts/caddy/users.caddy.snippet: No such file
> ERROR: cannot find closing brace in /opt/gendesign/scripts/caddy/...

Все 3 скрипта (add_user.sh, list_users.sh, remove_user.sh) имели
одинаковый баг — теперь все используют explicit REPO_ROOT:

```bash
SCRIPT_DIR="$(cd "$(dirname "$(realpath "$0")")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
SNIPPET="$REPO_ROOT/caddy/users.caddy.snippet"
```

Так понятнее (explicit `../..` от script-dir) и устойчиво к любой
глубине перемещения файла.

PR #426 (2026-05-23) изначально создавал 11 юзеров через add_user.sh
— скрипт работал в той worktree-сессии (видимо запускался из dir
где realpath давал нужный depth, e.g. через `cd scripts/auth && bash add_user.sh`),
но после compaction worktree удалён, реальный run-context утерян.

Production runs 2026-05-23 → user1..user10 + admin + kopylov были добавлены.
После 2026-05-26 manual workflow (`awk ... > tmp && mv tmp; docker restart caddy`)
заменил bash скрипт; теперь скрипт снова работает.

Detail: vault [[Bug_AddUser_Sh_Snippet_Path_Fixed]].

Verified locally: `realpath` resolves к `/Users/anton/Птица/gendesign/caddy/users.caddy.snippet` (correct).
This commit is contained in:
Light1YT 2026-05-26 13:39:01 +05:00
parent 252bc2de76
commit 7aced2a5e0
3 changed files with 14 additions and 3 deletions

View file

@ -8,7 +8,12 @@
# - НЕ коммитит изменения — это задача разработчика. # - НЕ коммитит изменения — это задача разработчика.
set -euo pipefail set -euo pipefail
SNIPPET="$(dirname "$(dirname "$(realpath "$0")")")/caddy/users.caddy.snippet" # Скрипт лежит в `<repo>/scripts/auth/`; snippet — в `<repo>/caddy/`.
# Нужно 3× `dirname`: $0 (.../scripts/auth/add_user.sh) → .../scripts/auth → .../scripts → .../<repo>.
# Bug fix 2026-05-26 — было 2× dirname (см. [[Bug_AddUser_Sh_Snippet_Path_Fixed]]).
SCRIPT_DIR="$(cd "$(dirname "$(realpath "$0")")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
SNIPPET="$REPO_ROOT/caddy/users.caddy.snippet"
usage() { usage() {
echo "Usage: $0 <username> \"<comment>\"" >&2 echo "Usage: $0 <username> \"<comment>\"" >&2

View file

@ -3,7 +3,10 @@
# Usage: ./scripts/auth/list_users.sh # Usage: ./scripts/auth/list_users.sh
set -euo pipefail set -euo pipefail
SNIPPET="$(dirname "$(dirname "$(realpath "$0")")")/caddy/users.caddy.snippet" # 3× dirname от $0 (.../scripts/auth/list_users.sh) → repo root. Bug fix 2026-05-26.
SCRIPT_DIR="$(cd "$(dirname "$(realpath "$0")")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
SNIPPET="$REPO_ROOT/caddy/users.caddy.snippet"
if [[ ! -f "$SNIPPET" ]]; then if [[ ! -f "$SNIPPET" ]]; then
echo "ERROR: snippet not found at $SNIPPET" >&2 echo "ERROR: snippet not found at $SNIPPET" >&2

View file

@ -5,7 +5,10 @@
# НЕ коммитит изменения — это задача разработчика. # НЕ коммитит изменения — это задача разработчика.
set -euo pipefail set -euo pipefail
SNIPPET="$(dirname "$(dirname "$(realpath "$0")")")/caddy/users.caddy.snippet" # 3× dirname от $0 (.../scripts/auth/remove_user.sh) → repo root. Bug fix 2026-05-26.
SCRIPT_DIR="$(cd "$(dirname "$(realpath "$0")")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
SNIPPET="$REPO_ROOT/caddy/users.caddy.snippet"
usage() { usage() {
echo "Usage: $0 <username>" >&2 echo "Usage: $0 <username>" >&2