Zum Inhalt springen

Build-Flags

Übergeben Sie Elide Build-Flags mit --flag oder -f und lesen Sie sie in einem elide.pkl-Manifest, um einen Build zu parametrisieren, etwa mit einem Release-Modus oder einer Versionsnummer.

Auf dieser Seite

Ein Build-Flag ist ein Name mit optionalem Wert, den elide.pkl bei der Auswertung liest.

Flags übergeben

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 und -f NAME funktionieren ebenfalls, an beliebiger Stelle. Argumente nach -- sind nie Flags. --args gehört zum Task run; siehe Build-Tasks.

Jeder projektbezogene Befehl nimmt Flags an:

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
  • Ein Flag ohne Wert (-fRELEASE) liefert true für bool(...) und einen Fehler für string(...).
  • Der Wert ist alles nach dem ersten =, unverändert: -fEXPR=a=b ergibt a=b.
  • Ein wiederholtes Flag behält jeden Wert; skalare Zugriffsmethoden lesen den letzten (Wiederholte Flags).
  • Flags müssen nicht deklariert werden; ein unbekannter Name gilt als nicht vorhanden.
  • Namen dürfen nicht leer sein und weder , noch = enthalten.

Flags in elide.pkl lesen

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")
ZugriffsmethodeRückgabe
has(name)Ob das Flag übergeben wurde, mit oder ohne Wert.
count(name)Anzahl der Übergaben; 0, wenn nicht vorhanden.
string(name)Der Wert; null, wenn nicht vorhanden; Fehler, wenn ohne Wert.
stringOr(name, orElse)Der Wert oder orElse, wenn nicht vorhanden.
bool(name)false, wenn nicht vorhanden, true, wenn ohne Wert; true/false, yes/no, on/off, 1/0 (Groß-/Kleinschreibung egal); sonst Fehler.
int(name)Der Wert als Int; null, wenn nicht vorhanden; Fehler, wenn keine Ganzzahl.
strings(name)Alle Werte in Reihenfolge; leer, wenn nicht vorhanden; Fehler bei einem Vorkommen ohne Wert.
stringsOr(name, orElse)Alle Werte oder orElse, wenn nicht vorhanden.
ints(name)Alle Werte als Int; leer, wenn nicht vorhanden; Fehler, wenn einer keine Ganzzahl ist.
bools(name)Alle Werte als Boolean; leer, wenn nicht vorhanden; ein Vorkommen ohne Wert ergibt true.
rawMapping<String, String> der wirksamen Werte; ein Flag ohne Wert wird zu "".
allMapping<String, List<String>> aller Werte.

Verwenden Sie strings(...), um einen oder mehrere Werte anzunehmen. Typisierte Zugriffsmethoden schlagen bei ungültiger Eingabe fehl:

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

Umgebungsvariablen

read("env:NAME") sieht nur PATH, HOME, USER, LANG, LC_*, TZ, CI, TERM, SHELL, OS, TMPDIR und ELIDE_*; jede andere Variable gilt als nicht vorhanden. Verwenden Sie ein Build-Flag oder erlauben Sie weitere:

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

Wiederholte Flags

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

Werte behalten Kommas, Leerzeichen, = und Unicode. Listen-Zugriffsmethoden prüfen jedes Element:

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

Flags in verschachtelten Blöcken

Innerhalb eines verschachtelten Objektrumpfs wird ein einfaches build nicht aufgelöst. Binden Sie ein local auf Modulebene oder verwenden Sie 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"
      }
    }
  }
}

War diese Seite hilfreich?