# الدلائل {#directories}

ينظم Tuist ملفاته عبر عدة دلائل على نظامك، باتباع [مواصفات الدليل الأساسي لـ
XDG]
(https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html).
يوفر هذا طريقة قياسية ونظيفة لإدارة ملفات التكوين وذاكرة التخزين المؤقت وملفات
الحالة.

## متغيرات البيئة المدعومة {#supported-environment-variables}

يدعم تويست كلاً من متغيرات XDG القياسية والمتغيرات المسبقة الخاصة بتويست. تحظى
المتغيرات الخاصة بتويست (المسبوقة ببادئة `TUIST_`) بالأولوية، مما يسمح لك بتهيئة
تويست بشكل منفصل عن التطبيقات الأخرى.

### دليل التكوين {#configuration-directory}

**متغيرات البيئة:**
- `TUIST_XDG_CONFIG_HOME` (له الأسبقية)
- `xdg_config_home`

**الإعداد الافتراضي:** `~/.config/tuist`

**تُستخدم لـ**
- بيانات اعتماد الخادم (`بيانات الاعتماد/{المضيف}.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 الافتراضي`

**تُستخدم لـ**
- **الإضافات**: تم تنزيل وتجميع ذاكرة التخزين المؤقت للمكونات الإضافية
- **مساعدو وصف المشروع**: أدوات مساعدة وصف المشروع المجمعة
- **بيانات**: ملفات البيان المخزنة مؤقتًا
- **المشاريع**: ذاكرة التخزين المؤقت لمشروع الأتمتة المُنشأة
- **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_STATE_HOME` (له الأسبقية)
- `XDG_STATE_HOME`

**الإعداد الافتراضي:** ` ~/.loc/.local/state/tuist`

**تُستخدم لـ**
- **السجلات**: ملفات السجلات (`logs/{uuid}.log`)
- **أقفال**: ملفات قفل المصادقة (`{handle}.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}

عند تحديد الدليل الذي يجب استخدامه، يتحقق تويست من متغيرات البيئة بالترتيب
التالي:

1. **المتغير الخاص بالتويست** (على سبيل المثال، `TUIST_XDG_CONFIG_HOME`)
2. **متغير XDG القياسي** (على سبيل المثال، `XDG_CONFIG_HOME`)
3. **الموقع الافتراضي** (على سبيل المثال، `~/.config/tuist`)

يسمح لك ذلك بما يلي:
- استخدام متغيرات XDG القياسية لتنظيم جميع تطبيقاتك بشكل متسق
- التجاوز بالمتغيرات الخاصة بتويست عندما تحتاج إلى مواقع مختلفة لتويست
- الاعتماد على الإعدادات الافتراضية المعقولة دون أي تهيئة

## حالات الاستخدام الشائعة {#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/CDD {#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
```
