Skip to content

Katalogi

Tuist organizuje swoje pliki w kilku katalogach w systemie, zgodnie ze specyfikacją XDG Base Directory Specification. Zapewnia to czysty, standardowy sposób zarządzania konfiguracją, pamięcią podręczną i plikami stanu.

Obsługiwane zmienne środowiskowe#

Tuist obsługuje zarówno standardowe zmienne XDG, jak i prefiksowane warianty specyficzne dla Tuist. Warianty specyficzne dla Tuist (z prefiksem TUIST_) mają pierwszeństwo, umożliwiając konfigurację Tuist niezależnie od innych aplikacji.

Katalog konfiguracji#

Zmienne środowiskowe:

  • TUIST_XDG_CONFIG_HOME (ma pierwszeństwo)
  • XDG_CONFIG_HOME

Domyślnie: ~/.config/tuist

Używany do:

  • Poświadczenia serwera (credentials/{host}.json)

Przykład:

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

Katalog pamięci podręcznej#

Zmienne środowiskowe:

  • TUIST_XDG_CACHE_HOME (ma pierwszeństwo)
  • XDG_CACHE_HOME

Domyślnie: ~/.cache/tuist

Używany do:

  • Wtyczki: Pobrana i skompilowana pamięć podręczna wtyczek
  • ProjectDescriptionHelpers: Skompilowane narzędzia pomocnicze opisu projektu
  • Manifesty: Pliki manifestu w pamięci podręcznej
  • Projekty: Wygenerowana pamięć podręczna projektu automatyzacji
  • EditProjects: Pamięć podręczna dla polecenia edycji
  • Uruchomienia: Testowanie i tworzenie danych analitycznych uruchomień
  • Pliki binarne: Pliki binarne artefaktów kompilacji (nieudostępniane w różnych środowiskach)
  • SelectiveTests: Pamięć podręczna testów selektywnych

Przykład:

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

Katalog państw#

Zmienne środowiskowe:

  • TUIST_XDG_STATE_HOME (ma pierwszeństwo)
  • XDG_STATE_HOME

Domyślnie: ~/.local/state/tuist

Używany do:

  • Dzienniki: Pliki dziennika (logs/{uuid}.log)
  • Blokady: Pliki blokady uwierzytelniania ({handle}.sock)

Przykład:

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

Kolejność pierwszeństwa#

Podczas określania, który katalog ma zostać użyty, Tuist sprawdza zmienne środowiskowe w następującej kolejności:

  1. Zmienna specyficzna dla Tuist (np. TUIST_XDG_CONFIG_HOME).
  2. Standardowa zmienna XDG (np. XDG_CONFIG_HOME)
  3. Domyślna lokalizacja (np. ~/.config/tuist)

Pozwala to na:

  • Użyj standardowych zmiennych XDG, aby spójnie zorganizować wszystkie aplikacje
  • Zastąp zmiennymi specyficznymi dla Tuist, gdy potrzebujesz różnych lokalizacji dla Tuist
  • Poleganie na rozsądnych ustawieniach domyślnych bez żadnej konfiguracji

Typowe przypadki użycia#

Izolowanie Tuist dla każdego projektu#

Warto odizolować pamięć podręczną i stan Tuist dla każdego projektu:

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"

Środowiska CI/CD#

W środowiskach CI warto korzystać z katalogów tymczasowych:

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

Debugowanie z izolowanymi katalogami#

Podczas debugowania błędów warto mieć czyste konto:

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