# Справочники {#directories} Tuist организует свои файлы в нескольких каталогах в вашей системе, следуя спецификации [XDG Base Directory Specification](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html). Это обеспечивает чистый, стандартный способ управления файлами конфигурации, кэша и состояния. ## Поддерживаемые переменные окружения {#supported-environment-variables} Tuist поддерживает как стандартные переменные XDG, так и специфические для Tuist варианты с префиксом. Варианты, специфичные для Tuist (с префиксом `TUIST_`), имеют приоритет, что позволяет настраивать Tuist отдельно от других приложений. ### Каталог конфигурации {#configuration-directory} **Переменные среды:** - `TUIST_XDG_CONFIG_HOME` (имеет приоритет) - `XDG_CONFIG_HOME` **По умолчанию:** `~/.config/tuist` **Используется для:** - Учетные данные сервера (`credentials/{host}.json`) **Пример:** ```bash # Set Tuist-specific config directory export TUIST_XDG_CONFIG_HOME=/custom/config tuist auth login # Or use standard XDG variable export XDG_CONFIG_HOME=/custom/config tuist auth login ``` ### Каталог кэша {#cache-directory} **Переменные среды:** - `TUIST_XDG_CACHE_HOME` (имеет приоритет) - `XDG_CACHE_HOME` **По умолчанию:** `~/.cache/tuist` **Используется для:** - **Плагины**: Загруженный и скомпилированный кэш плагинов - **ProjectDescriptionHelpers**: Скомпилированные помощники для описания проектов - **Манифесты**: Кэшированные файлы манифеста - **Проекты**: Сгенерированный кэш проекта автоматизации - **EditProjects**: Кэш для команды редактирования - **Запуски**: тестирование и создание аналитических данных. - **Бинарные файлы**: Двоичные файлы артефактов сборки (не подлежат совместному использованию в разных средах) - **Выборочные тесты**: Кэш для выборочного тестирования **Пример:** ```bash # Set Tuist-specific cache directory export TUIST_XDG_CACHE_HOME=/tmp/tuist-cache tuist cache # Or use standard XDG variable export XDG_CACHE_HOME=/tmp/cache tuist cache ``` ### Государственный справочник {#state-directory} **Переменные среды:** - `TUIST_XDG_STATE_HOME` (имеет приоритет) - `XDG_STATE_HOME` **По умолчанию:** `~/.local/state/tuist` **Используется для:** - **Журналы**: Файлы журналов (`logs/{uuid}.log`) - **Замки**: Файлы блокировки аутентификации (`{ дескриптор}.sock`) **Пример:** ```bash # Set Tuist-specific state directory export TUIST_XDG_STATE_HOME=/var/log/tuist tuist generate # Or use standard XDG variable export XDG_STATE_HOME=/var/log tuist generate ``` ## Порядок старшинства {#precedence-order} Определяя, какой каталог использовать, Tuist проверяет переменные окружения в следующем порядке: 1. **Специфическая для Туиста переменная** (например, `TUIST_XDG_CONFIG_HOME`). 2. **Стандартная переменная XDG** (например, `XDG_CONFIG_HOME`). 3. **Расположение по умолчанию** (например, `~/.config/tuist`). Это позволит вам: - Используйте стандартные переменные XDG для последовательной организации всех ваших приложений - Переопределите переменные, специфичные для Tuist, если вам нужны разные места для Tuist - Полагайтесь на разумные значения по умолчанию без какой-либо настройки ## Общие случаи использования {#common-use-cases} ### Изолирование Туиста для каждого проекта {#isolating-tuist-per-project} Возможно, вы захотите изолировать кэш и состояние Tuist для каждого проекта: ```bash # In your project's .envrc (using direnv) export TUIST_XDG_CACHE_HOME="$PWD/.tuist/cache" export TUIST_XDG_STATE_HOME="$PWD/.tuist/state" export TUIST_XDG_CONFIG_HOME="$PWD/.tuist/config" ``` ### Среды CI/CD {#ci-cd-environments} В среде CI вы можете захотеть использовать временные каталоги: ```yaml # GitHub Actions example env: TUIST_XDG_CACHE_HOME: /tmp/tuist-cache TUIST_XDG_STATE_HOME: /tmp/tuist-state jobs: build: runs-on: macos-latest steps: - uses: actions/checkout@v4 - run: tuist generate - name: Upload logs if: failure() uses: actions/upload-artifact@v4 with: name: tuist-logs path: /tmp/tuist-state/logs/*.log ``` ### Отладка с изолированными каталогами {#debugging-with-isolated-directories} При отладке проблем вам может понадобиться чистый лист: ```bash # Create temporary directories for debugging export TUIST_XDG_CACHE_HOME=$(mktemp -d) export TUIST_XDG_STATE_HOME=$(mktemp -d) export TUIST_XDG_CONFIG_HOME=$(mktemp -d) # Run Tuist commands tuist generate # Clean up when done rm -rf $TUIST_XDG_CACHE_HOME $TUIST_XDG_STATE_HOME $TUIST_XDG_CONFIG_HOME ```