Об этом проекте
dotfiles-web представляет собой публичный сайт-витрину и центр документации для системы dotfiles dotgibson, которая в README описывается как терминальная среда из одиннадцати репозиториев и трех уровней (Core → OS-native → Role). Сайт документирует эту систему, а не настраивает машину, поэтому он явно не является одним из трех уровней. Сайт построен на Astro, оформлен в теме Tokyo Night и развернут на GitHub Pages.
Структура
В README перечислены пять основных маршрутов: главная страница с приветствием, моделью трех уровней, картой репозиториев и инструкциями по установке; страница «начало работы» с руководством по установке для каждой платформы; страница архитектуры, охватывающая модель уровней, обоснование использования subtree, загрузчик и детальный разбор; центр документации с концепциями, руководствами, справочником и сгенерированной страницей для каждого репозитория; и журнал изменений, который зеркалирует CHANGELOG.md каждого репозитория.
Контент на основе данных
Сайт описывается как управляемый данными и в значительной степени производный от исходников: карточки витрины, страницы документации репозиториев, полоса «в цифрах» и журнал изменений берутся из файлов в src/data и соседних репозиториев, чтобы документация не могла незаметно разойтись с описываемым кодом. Редактируемые входные данные включают src/data/site.ts (название сайта, владелец, навигация, ссылки на GitHub), src/data/repos.ts (карта репозиториев, описание и статус каждого), src/data/install.ts (шаги установки для разных платформ) и Markdown-страницы в src/content/docs.
Четыре сборщика в scripts/ извлекают генерируемые данные из соседних репозиториев: collect-metrics.mjs создает generated.json из одиннадцати репозиториев dotfiles; collect-snippets.mjs создает snippets.json из восьми курируемых файлов в шести репозиториях; collect-corpus.mjs создает corpus.json из htpx; и collect-coverage.mjs создает coverage.json из dotfiles-Defense.
Строгость и контроль происхождения
Команда npm run data описывается как путь публикации и является строгой: отсутствие репозитория, нахождение соседнего репозитория на feature-ветке или наличие незакоммиченных правок в файле, который читают сборщики, приводит к сбою выполнения. В README объясняется, что эта проверка существует, так как однажды dotfiles-core, развернутый на feature-ветке, опубликовал запись в журнале изменений, которой не было в основной ветке Core. Отдельные сборщики и команда npm run data:lenient остаются лояльными для исследовательских запусков; в README разграничивается безобидный случай (отсутствие исходного репозитория — закоммиченный файл не тронут, exit 0) и случай, который все равно записывает «загрязненные» данные (репозиторий присутствует, но не чист, помечается generatedFrom.clean: false).
Два защитных механизма считывают этот вердикт о происхождении: pre-commit хук, устанавливаемый через npm install или npm run hooks:install (на одной машине, охватывает generated.json и snippets.json), и CI-задача committed-data-provenance в data-freshness.yml (для каждого PR). Хук громко пропускается, если установлен core.hooksPath, и может быть обойден с помощью DOTFILES_ALLOW_DIRTY_DATA=1 или --no-verify; CI-задача этого не позволяет.
Автоматизация
Файл fleet-sync.yml еженедельно запускает всех четырех сборщиков и открывает PR при расхождении выходных данных. data-freshness.yml вызывает сбой CI, если любой из четырех закоммиченных файлов больше не соответствует своему источнику, а также если версия Core в generated.json отстает от последнего релиза dotfiles-core. Пуш в main запускает deploy.yml (сборка Astro → GitHub Pages), а исходные репозитории могут запросить пересборку через repository_dispatch, аутентифицируясь с помощью краткосрочного токена GitHub App, как описано в docs/WEBHOOK-SETUP.md.
Разработка
Необходимые условия — Node.js с npm; проект представляет собой стандартный проект Astro. Команды включают npm run dev (локальный сервер разработки), npm run build (производственная сборка в dist/), npm run preview и npm run check (проверки типов Astro и коллекций контента). Руководство по внесению вклада просит контрибьюторов считать репозитории-источники каноническими, хранить контент в файлах данных, а не жестко кодировать его в страницах, и проходить проверки npm run check и npm run build перед пушем. Указана лицензия MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.