# Directorios {#directories} Tuist organiza sus archivos a través de varios directorios en tu sistema, siguiendo la [XDG Base Directory Specification](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html). Esto proporciona una forma limpia y estándar de gestionar los archivos de configuración, caché y estado. ## Variables de entorno compatibles {#supported-environment-variables} Tuist admite tanto variables XDG estándar como variantes prefijadas específicas de Tuist. Las variantes específicas de Tuist (prefijadas con `TUIST_`) tienen preferencia, lo que te permite configurar Tuist por separado de otras aplicaciones. ### Directorio de configuración {#configuration-directory} **Variables de entorno:** - `TUIST_XDG_CONFIG_HOME` (tiene prioridad) - `XDG_CONFIG_HOME` **Por defecto:** `~/.config/tuist` **Se utiliza para:** - Credenciales del servidor (`credentials/{host}.json`) **Por ejemplo:** ```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 ``` ### Directorio caché {#cache-directory} **Variables de entorno:** - `TUIST_XDG_CACHE_HOME` (tiene prioridad) - `XDG_CACHE_HOME` **Por defecto:** `~/.cache/tuist` **Se utiliza para:** - **Plugins**: Caché de plugins descargados y compilados - **ProjectDescriptionHelpers**: Ayudantes de descripción de proyectos compilados - **Manifiestos**: Archivos de manifiesto en caché - **Proyectos**: Caché del proyecto de automatización generado - **EditProjects**: Caché para el comando de edición - **Ejecuta**: Prueba y construye datos analíticos de ejecución - **Binarios**: Binarios de artefactos de construcción (no compartibles entre entornos) - **Pruebas selectivas**: Caché de pruebas selectivas **Por ejemplo:** ```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 ``` ### Directorio estatal {#state-directory} **Variables de entorno:** - `TUIST_XDG_STATE_HOME` (tiene prioridad) - `XDG_STATE_HOME` **Por defecto:** `~/.local/state/tuist` **Se utiliza para:** - **Registros**: Archivos de registro (`logs/{uuid}.log`) - **Bloqueos**: Archivos de bloqueo de autenticación (`{handle}.sock`) **Por ejemplo:** ```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 ``` ## Orden de precedencia {#precedence-order} Al determinar qué directorio utilizar, Tuist comprueba las variables de entorno en el siguiente orden: 1. **Variable específica de Tuist** (por ejemplo, `TUIST_XDG_CONFIG_HOME`) 2. **Variable XDG estándar** (por ejemplo, `XDG_CONFIG_HOME`) 3. **Ubicación por defecto** (por ejemplo, `~/.config/tuist`) Esto te permite: - Utiliza variables XDG estándar para organizar todas tus aplicaciones de forma coherente - Sustituye con variables específicas de Tuist cuando necesites diferentes ubicaciones para Tuist - Confiar en valores por defecto sensibles sin ninguna configuración ## Casos de uso común {#common-use-cases} ### Aislar Tuist por proyecto {#isolating-tuist-per-project} Tal vez quieras aislar la caché y el estado de Tuist por proyecto: ```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" ``` ### Entornos CI/CD {#ci-cd-environments} En entornos CI, es posible que desee utilizar directorios temporales: ```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 ``` ### Depuración con directorios aislados {#debugging-with-isolated-directories} Al depurar problemas, es posible que desee hacer borrón y cuenta nueva: ```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 ```