fix(tools): create-readme hardcodes github.com/slaid098 in git URL fallback #16

Closed
opened 2026-08-07 13:03:18 +03:00 by slaid098 · 0 comments
Owner

Контекст

create-readme.ts:61-63 (строка 63 — fallback) хардкодит github.com/slaid098 в git URL для clone-инструкции в README:

const cloneUrl = process.env.FORGEJO_URL
  ? `${process.env.FORGEJO_URL}/slaid098/${args.repo_name}.git`
  : `https://github.com/slaid098/${args.repo_name}.git`

PR #10 (commit 50ad724) сделал clone URL динамическим из FORGEJO_URL (issue #1 Fix #1 — выполнен). Однако fallback-ветка (строка 63) осталась на github.com/slaid098.

ADR-093 (PR #14): GitHub аккаунт slaid098 удалён, Forgejo git.slaid098.dev — единственный хостинг. Fallback на github.com/slaid098 — мёртвый код: если FORGEJO_URL не задан, tool генерирует нерабочий clone URL (репо не существует на github.com). Issue #1 Fix #1 expected fallback на github.com (написан ДО ADR-093), но после ADR-093 fallback стал мёртвым.

Обнаружено reviewer'ом PR #15 (refactor templates Forgejo-first) — вне scope PR #15.

Задача

  1. Удалить мёртвый fallback на github.com/slaid098 в create-readme.ts:63. Если FORGEJO_URL не задан — возвращать понятную ошибку (не генерировать нерабочий URL).
  2. Проверить связанные строки в create-readme.ts на другие github.com хардкоды (access_url, development sections, и т.д.).
  3. Обновить тесты create-readme если есть ассерты на fallback github.com.

Контракты

  • FORGEJO_URL задан (продакшен через docker-compose) → ${FORGEJO_URL}/slaid098/${repo_name}.git (текущее поведение, работает)
  • FORGEJO_URL НЕ задан → ошибка "FORGEJO_URL env var required" (НЕ fallback на github.com)
  • ADR-093: GitHub мёртв, github.com/slaid098 — нерабочий URL

Инварианты

  • Внешний контракт create-readme tool НЕ меняется (параметры те же)
  • При FORGEJO_URL заданном — поведение идентично текущему (clone URL = Forgejo)
  • include_clone: false (userscripts/web apps/npm packages) — clone line опускается (не затрагивается)

Граничные случаи

  • FORGEJO_URL задан, но пустая строка → ошибка (не fallback)
  • FORGEJO_URL без trailing slash → ${FORGEJO_URL}/slaid098/... работает (URL constructor не нужен, string concat)
  • Старые README с github.com clone URL в существующих репо — НЕ мигрируются автоматически (нужен ручной вызов create-readme)

Влияние на связанные компоненты

  • create-readme.ts:61-63 — основная правка (удалить fallback, добавить error)
  • tests/test_create_readme*.ts (если есть) — обновить ассерты на fallback
  • Issue #1 Fix #1 — частично выполнен PR #10 (динамический URL), этот issue закрывает мёртвый fallback (эволюция после ADR-093)
  • project-status.check_readme — НЕ затрагивается (читает локальный README, не генерирует)

Вне scope

  • Issue #1 Fix #2-5 (headRefName, branch protection, release, gh issue list) — отдельные задачи
  • Миграция существующих README с github.com clone URL — ручная, не автоматическая
  • create-readme remote mode (Forgejo API PUT) — не затрагивается

Критерии приемки

  • create-readme.ts:63 — fallback на github.com/slaid098 удалён
  • При FORGEJO_URL НЕ заданном → tool возвращает ошибку "FORGEJO_URL env var required" (не генерирует README с нерабочим URL)
  • При FORGEJO_URL заданном → clone URL = ${FORGEJO_URL}/slaid098/${repo_name}.git (без изменений)
  • include_clone: false → clone line опускается (без изменений)
  • Проверены другие github.com хардкоды в create-readme.ts (access_url, development, и т.д.) — пофиксены если есть
  • Тесты обновлены (ассерты на fallback github.com → ассерты на error)
  • CI зелёный
## Контекст `create-readme.ts:61-63` (строка 63 — fallback) хардкодит `github.com/slaid098` в git URL для clone-инструкции в README: ```ts const cloneUrl = process.env.FORGEJO_URL ? `${process.env.FORGEJO_URL}/slaid098/${args.repo_name}.git` : `https://github.com/slaid098/${args.repo_name}.git` ``` PR #10 (commit `50ad724`) сделал clone URL динамическим из `FORGEJO_URL` (issue #1 Fix #1 — выполнен). Однако fallback-ветка (строка 63) осталась на `github.com/slaid098`. ADR-093 (PR #14): GitHub аккаунт slaid098 удалён, Forgejo `git.slaid098.dev` — единственный хостинг. Fallback на `github.com/slaid098` — мёртвый код: если `FORGEJO_URL` не задан, tool генерирует нерабочий clone URL (репо не существует на github.com). Issue #1 Fix #1 expected fallback на `github.com` (написан ДО ADR-093), но после ADR-093 fallback стал мёртвым. Обнаружено reviewer'ом PR #15 (refactor templates Forgejo-first) — вне scope PR #15. ## Задача 1. Удалить мёртвый fallback на `github.com/slaid098` в `create-readme.ts:63`. Если `FORGEJO_URL` не задан — возвращать понятную ошибку (не генерировать нерабочий URL). 2. Проверить связанные строки в `create-readme.ts` на другие `github.com` хардкоды (access_url, development sections, и т.д.). 3. Обновить тесты `create-readme` если есть ассерты на fallback `github.com`. ## Контракты - `FORGEJO_URL` задан (продакшен через docker-compose) → `${FORGEJO_URL}/slaid098/${repo_name}.git` (текущее поведение, работает) - `FORGEJO_URL` НЕ задан → ошибка `"FORGEJO_URL env var required"` (НЕ fallback на github.com) - ADR-093: GitHub мёртв, `github.com/slaid098` — нерабочий URL ## Инварианты - Внешний контракт `create-readme` tool НЕ меняется (параметры те же) - При `FORGEJO_URL` заданном — поведение идентично текущему (clone URL = Forgejo) - `include_clone: false` (userscripts/web apps/npm packages) — clone line опускается (не затрагивается) ## Граничные случаи - `FORGEJO_URL` задан, но пустая строка → ошибка (не fallback) - `FORGEJO_URL` без trailing slash → `${FORGEJO_URL}/slaid098/...` работает (URL constructor не нужен, string concat) - Старые README с `github.com` clone URL в существующих репо — НЕ мигрируются автоматически (нужен ручной вызов `create-readme`) ## Влияние на связанные компоненты - `create-readme.ts:61-63` — основная правка (удалить fallback, добавить error) - `tests/test_create_readme*.ts` (если есть) — обновить ассерты на fallback - Issue #1 Fix #1 — частично выполнен PR #10 (динамический URL), этот issue закрывает мёртвый fallback (эволюция после ADR-093) - `project-status.check_readme` — НЕ затрагивается (читает локальный README, не генерирует) ## Вне scope - Issue #1 Fix #2-5 (headRefName, branch protection, release, gh issue list) — отдельные задачи - Миграция существующих README с github.com clone URL — ручная, не автоматическая - `create-readme` remote mode (Forgejo API PUT) — не затрагивается ## Критерии приемки - [ ] `create-readme.ts:63` — fallback на `github.com/slaid098` удалён - [ ] При `FORGEJO_URL` НЕ заданном → tool возвращает ошибку `"FORGEJO_URL env var required"` (не генерирует README с нерабочим URL) - [ ] При `FORGEJO_URL` заданном → clone URL = `${FORGEJO_URL}/slaid098/${repo_name}.git` (без изменений) - [ ] `include_clone: false` → clone line опускается (без изменений) - [ ] Проверены другие `github.com` хардкоды в `create-readme.ts` (access_url, development, и т.д.) — пофиксены если есть - [ ] Тесты обновлены (ассерты на fallback github.com → ассерты на error) - [ ] CI зелёный
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
slaid098/opencode-config#16
No description provided.