Aller au contenu

Options de build

Passez des options de build à Elide avec --flag ou -f et lisez-les dans un manifeste elide.pkl pour paramétrer un build, par exemple un mode release ou un numéro de version.

Sur cette page

Une option de build est un nom, avec une valeur facultative, que elide.pkl lit lors de son évaluation.

Passer des options

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 et -f NAME fonctionnent aussi, à n’importe quelle position. Les arguments après -- ne sont jamais des options. --args appartient à la tâche run ; voir Tâches de build.

Toutes les commandes qui travaillent sur un projet acceptent des options :

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
  • Une option sans valeur (-fRELEASE) donne true pour bool(...) et une erreur pour string(...).
  • La valeur est tout ce qui suit le premier =, telle quelle : -fEXPR=a=b donne a=b.
  • Une option répétée conserve chaque valeur ; les accesseurs scalaires lisent la dernière (Options répétées).
  • Les options ne se déclarent pas ; un nom inconnu est absent.
  • Les noms ne peuvent pas être vides ni contenir , ou =.

Lire les options dans 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")
AccesseurRenvoie
has(name)Si l’option a été passée, avec ou sans valeur.
count(name)Nombre de passages ; 0 si absente.
string(name)La valeur ; null si absente ; lève une erreur si sans valeur.
stringOr(name, orElse)La valeur, ou orElse si absente.
bool(name)false si absente, true si sans valeur ; true/false, yes/no, on/off, 1/0 (casse indifférente) ; sinon lève une erreur.
int(name)La valeur en Int ; null si absente ; lève une erreur si ce n’est pas un entier.
strings(name)Toutes les valeurs dans l’ordre ; vide si absente ; lève une erreur sur une occurrence sans valeur.
stringsOr(name, orElse)Toutes les valeurs, ou orElse si absente.
ints(name)Toutes les valeurs en Int ; vide si absente ; lève une erreur si l’une n’est pas un entier.
bools(name)Toutes les valeurs en Boolean ; vide si absente ; une occurrence sans valeur vaut true.
rawMapping<String, String> des valeurs effectives ; une option sans valeur correspond à "".
allMapping<String, List<String>> de toutes les valeurs.

Utilisez strings(...) pour accepter une ou plusieurs valeurs. Les accesseurs typés échouent sur une entrée incorrecte :

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

Variables d’environnement

read("env:NAME") ne voit que PATH, HOME, USER, LANG, LC_*, TZ, CI, TERM, SHELL, OS, TMPDIR et ELIDE_* ; toute autre variable est lue comme absente. Utilisez une option de build, ou autorisez-en davantage :

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

Options répétées

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

Les valeurs conservent les virgules, les espaces, = et Unicode. Les accesseurs de liste vérifient chaque élément :

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

Options dans des blocs imbriqués

Dans le corps d’un objet imbriqué, build seul ne se résout pas. Liez un local au niveau du module, ou utilisez 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"
      }
    }
  }
}

Cette page vous a-t-elle aidé ?