Перейти до вмісту

Прапорці збирання

Передавайте прапорці збирання в 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"
      }
    }
  }
}

Чи була ця сторінка корисною?