# عرض إعدادات Pkl

قيّم ملف `.pkl` أو `.pcf` مباشرةً وأرسل مخرجاته المعروضة إلى stdout. استخدم هذا لتوليد إعدادات
التطبيق، أو لتغذية أدوات النشر، أو لفحص الإعدادات قبل إيداعها. لا يلزم وجود مشروع Elide.

## توليد JSON أو YAML

ابدأ بالملف `config.pkl`:

```pkl
service = "api"
port = 8080
```

اختر الصيغة التي يستهلكها تطبيقك ووجّه النتيجة إلى ملف:

```shell
elide --format=json config.pkl > config.json
elide --format=yaml config.pkl > config.yaml
```

تحتوي مخرجات JSON على `service` و `port` بالقيم والأنواع نفسها. ويعمل الأمر الصريح `run` أيضًا:

```shell
elide run --format json config.pkl
```

تقبل مدخلات `.pkl` و `.pcf` الخيارات نفسها. على سبيل المثال، حوّل إعدادات PCF موجودة إلى ⁦JSON:⁩

```shell
elide --format=json config.pcf > config.json
```

## اختيار صيغة المخرجات

| الخيار | المخرجات | الاستخدام المعتاد |
| --- | --- | --- |
| `--format=json` | JSON | إعدادات التطبيقات والأدوات التي تستهلك JSON |
| `--format=yaml` | YAML | إعدادات النشر |
| `--format=pcf` | Pkl Configuration Format | فحص الإعدادات المقيَّمة بترميز Pkl |
| دون `--format` | المخرجات المضبوطة في الوحدة؛ PCF افتراضيًا | احترام تعريف المخرجات الخاص بالوحدة |

مخرجات TOML غير مدعومة. وتفشل الصيغة غير المدعومة برمز الخروج `2`.

## مشاركة الإعدادات بين الملفات

تُحلّ الاستيرادات النسبية انطلاقًا من ملف الإدخال، لذا يمكن للإعدادات إعادة استخدام القيم الافتراضية المجاورة حتى عند
استدعائها من مجلد آخر. على سبيل المثال، ضع `defaults.pkl` و `config.pkl` معًا ضمن `config/`:

```pkl
// defaults.pkl
port = 8080
```

```pkl
// config.pkl
import "defaults.pkl"

service = "api"
port = defaults.port
```

من جذر المستودع، اعرض الإعدادات باستخدام:

```shell
elide --format=json config/config.pkl
```

## استخدام المخرجات في السكربتات و CI

لا يحتوي stdout إلا على المستند المعروض؛ وتذهب رسائل التشخيص وأخطاء التقييم إلى stderr. لا حاجة إلى `--quiet`
لإعادة التوجيه أو خطوط الأنابيب. على سبيل المثال، افحص خاصية عند تثبيت `jq`:

```shell
elide --format=json config.pkl | jq '.port'
```

يُعرض ملف بيان المشروع بالطريقة نفسها، فيُظهر إعداداته المقيَّمة بالكامل بما فيها القيم الافتراضية:

```shell
elide --format=json elide.pkl | jq '.dependencies'
```

يخرج فشل التقييم برمز `1` ولا يكتب أي محتوى معروض إلى stdout. لتحديث ملف بشكل ذرّي، استخدم `--out` بدلًا من إعادة
التوجيه في الصدفة:

```shell
elide --format=json --out config.json config.pkl
```

يكتب `--out config.json` ملفًا مؤقتًا في مجلد الوجهة ولا يستبدل `config.json` ذرّيًا إلا بعد نجاح التقييم والكتابة.
وتترك حالات الفشل الملف الموجود دون تغيير وتخرج برمز غير صفري. يجب أن يكون مجلد الوجهة موجودًا وأن يدعم الاستبدال
الذرّي. وتُحلّ المسارات النسبية انطلاقًا من مجلد العمل.

استخدم `--out -` لاختيار stdout صراحةً:

```shell
elide --format=json --out - config.pkl
```

يرفض عرض المستندات `--sandbox` و `--limit`؛ فضوابط التنفيذ هذه لا تنطبق على هذا الأمر. لكل خيارات الأمر، راجع
[مرجع CLI](/docs/cli-references). ولقراءة ملف README أو دليل تشغيل في الطرفية نفسها، راجع
[Markdown في الطرفية](/docs/terminal-markdown).
