انتقل إلى المحتوى

خيارات البناء

مرّر خيارات البناء إلى Elide باستخدام --flag أو -f، واقرأها في ملف البيان elide.pkl لتخصيص البناء، مثل وضع الإصدار النهائي أو رقم الإصدار.

في هذه الصفحة

خيار البناء اسم، مع قيمة اختيارية، يقرؤه elide.pkl عند تقييمه.

تمرير الخيارات

elide build run --args="Hello World 🌎" --flag=RELEASE --flag=VERSION=1.2.3
elide build run --args="Hello World 🌎" -fRELEASE -fVERSION=1.2.3

تعمل أيضًا الصيغتان --flag NAME و -f NAME، في أي موضع. الوسائط بعد -- ليست خيارات أبدًا. ينتمي --args إلى المهمة run؛ راجع مهام البناء.

كل أمر يعمل على مشروع يقبل الخيارات:

elide run -fRELEASE -fVERSION=1.2.3 -- "Hello World 🌎"
elide install --flag=RELEASE
elide format -fNO_KOTLIN
elide build -fRELEASE
elide test -fFAST
elide project export -fRELEASE    # shows the evaluated result
  • الخيار دون قيمة (-fRELEASE) يعطي true مع ⁦bool(...)⁩، وخطأً مع ⁦string(...)⁩.
  • القيمة هي كل ما يلي أول =، كما هو: -fEXPR=a=b يعطي a=b.
  • الخيار المكرر يحتفظ بكل قيمة؛ وتقرأ دوال الوصول أحادية القيمة القيمة الأخيرة (الخيارات المكررة).
  • لا تحتاج الخيارات إلى تصريح؛ والاسم غير المعروف يُعدّ غائبًا.
  • لا يمكن أن تكون الأسماء فارغة أو أن تحتوي على , أو =.

قراءة الخيارات في elide.pkl

amends "elide:project.pkl"

local isRelease = build.flags.bool("RELEASE")

name = if (isRelease) "demo-release" else "demo-debug"
version = build.flags.stringOr("VERSION", "0.0.0")
دالة الوصولتُرجع
has(name)هل مُرّر الخيار، بقيمة أو دونها.
count(name)عدد مرات تمريره؛ 0 عند الغياب.
string(name)القيمة؛ null عند الغياب؛ وترمي خطأً إن كان دون قيمة.
stringOr(name, orElse)القيمة، أو orElse عند الغياب.
bool(name)false عند الغياب، و true دون قيمة؛ true/false، yes/no، on/off، 1/0 (بأي حالة أحرف)؛ وإلا ترمي خطأً.
int(name)القيمة بوصفها Int؛ null عند الغياب؛ وترمي خطأً إن لم تكن عددًا صحيحًا.
strings(name)كل القيم بالترتيب؛ فارغة عند الغياب؛ وترمي خطأً عند ظهور دون قيمة.
stringsOr(name, orElse)كل القيم، أو orElse عند الغياب.
ints(name)كل القيم بوصفها Int؛ فارغة عند الغياب؛ وترمي خطأً إن لم تكن إحداها عددًا صحيحًا.
bools(name)كل القيم بوصفها Boolean؛ فارغة عند الغياب؛ والظهور دون قيمة يُقرأ true.
rawMapping<String, String> للقيم الفعلية؛ والخيار دون قيمة يقابله "".
allMapping<String, List<String>> لكل القيم.

استخدم ⁦strings(...)⁩ لقبول قيمة واحدة أو أكثر. تفشل دوال الوصول ذات الأنواع عند المُدخلات غير الصالحة:

–– Pkl Error ––
build flag `RELEASE` is not a boolean: `perhaps`

متغيرات البيئة

لا يرى read("env:NAME") إلا PATH و HOME و USER و LANG و LC_* و TZ و CI و TERM و SHELL و OS و TMPDIR و ELIDE_*؛ وأي متغير آخر يُقرأ غائبًا. استخدم خيار بناء، أو اسمح بالمزيد:

elide build --allow-env=GITHUB_SHA,JAVA_HOME
elide build --allow-env            # every variable

الخيارات المكررة

elide build -fARG=one -fARG=two -fARG='three, and a half'
local args = build.flags.strings("ARG")  // List("one", "two", "three, and a half")
local first = build.flags.all["ARG"].first
local latest = build.flags.string("ARG") // "three, and a half" — scalars read the last value

تحتفظ القيم بالفواصل والمسافات و = ومحارف Unicode. وتتحقق دوال الوصول إلى القوائم من كل عنصر:

–– Pkl Error ––
build flag `N` is not an integer: `x1`

الخيارات داخل الكتل المتداخلة

داخل جسم كائن متداخل، لا يُحلّ build المجرد. اربط متغيرًا local على مستوى الوحدة، أو استخدم module.build.flags:

local wantsExtra = build.flags.bool("EXTRA")

dependencies {
  maven {
    packages {
      "com.google.guava:guava:33.0.0-jre"
      when (wantsExtra) {
        "com.example:extra:1.0.0"
      }
      when (module.build.flags.bool("MORE")) {
        "com.example:more:1.0.0"
      }
    }
  }
}

هل كانت هذه الصفحة مفيدة؟