Saltar al contenido

Opciones de compilación

Pase opciones de compilación a Elide con --flag o -f y léalas en un manifiesto elide.pkl para parametrizar una compilación, por ejemplo un modo de publicación o un número de versión.

En esta página

Una opción de compilación es un nombre, con un valor opcional, que elide.pkl lee cuando se evalúa.

Pasar opciones

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 y -f NAME también funcionan, en cualquier posición. Los argumentos después de -- nunca son opciones. --args pertenece a la tarea run; consulte Tareas de compilación.

Todos los comandos que trabajan con proyectos aceptan opciones:

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
  • Una opción sin valor (-fRELEASE) da true para bool(...) y un error para string(...).
  • El valor es todo lo que sigue al primer =, tal cual: -fEXPR=a=b da a=b.
  • Una opción repetida conserva todos sus valores; los accesores escalares leen el último (Opciones repetidas).
  • Las opciones no necesitan declaración; un nombre desconocido está ausente.
  • Los nombres no pueden estar vacíos ni contener , o =.

Leer opciones en 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")
AccesorDevuelve
has(name)Si se pasó la opción, con o sin valor.
count(name)Veces que se pasó; 0 si está ausente.
string(name)El valor; null si está ausente; lanza un error si no tiene valor.
stringOr(name, orElse)El valor, u orElse si está ausente.
bool(name)false si está ausente, true si no tiene valor; true/false, yes/no, on/off, 1/0 (sin distinguir mayúsculas); si no, lanza un error.
int(name)El valor como Int; null si está ausente; lanza un error si no es un entero.
strings(name)Todos los valores en orden; vacío si está ausente; lanza un error ante una aparición sin valor.
stringsOr(name, orElse)Todos los valores, u orElse si está ausente.
ints(name)Todos los valores como Int; vacío si está ausente; lanza un error si alguno no es un entero.
bools(name)Todos los valores como Boolean; vacío si está ausente; una aparición sin valor se lee como true.
rawMapping<String, String> de los valores efectivos; una opción sin valor corresponde a "".
allMapping<String, List<String>> con todos los valores.

Use strings(...) para aceptar uno o varios valores. Los accesores tipados fallan con una entrada incorrecta:

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

Variables de entorno

read("env:NAME") solo ve PATH, HOME, USER, LANG, LC_*, TZ, CI, TERM, SHELL, OS, TMPDIR y ELIDE_*; cualquier otra variable se lee como ausente. Use una opción de compilación o permita más:

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

Opciones repetidas

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

Los valores conservan comas, espacios, = y Unicode. Los accesores de listas comprueban cada elemento:

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

Opciones dentro de bloques anidados

Dentro del cuerpo de un objeto anidado, build sin calificar no se resuelve. Vincule un local a nivel de módulo o use 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"
      }
    }
  }
}

¿Te resultó útil esta página?