De secuencia a flujo de trabajo: deje que `.lil` tome decisiones
Un script lineal es perfecto mientras la respuesta sea siempre «haz A, luego B y luego C». Cuando necesita comprobar si existe un directorio, reutilizar una ruta, guardar un resultado o detenerse con una razón clara, ya está construyendo un flujo de trabajo y no una simple lista.
Use el lenguaje de automatización más pequeño que resuelva la tarea
Un archivo que comienza con #lil pertenece al ejecutor lineal del Core: los comandos normales se ejecutan en orden y esa simplicidad es una ventaja. Es ideal para listas de preparación, diagnósticos repetibles y procedimientos cortos.
install runhelp runLas variables convierten rutas copiadas en intención con nombre
set root lil-playground da una función a una ruta. Después $root, $source y $archive explican qué significan los valores en vez de obligarle a editar el mismo literal en cinco lugares.
Los buenos nombres hacen portátil un script. Mantenga arriba los valores específicos del entorno, fuera los secretos y prefiera unas pocas variables claras a construcciones de texto ingeniosas.
set root lil-playground
set source lil-playground/project
set archive lil-playground/project.zipUna condición debe proteger un supuesto
if dir "$source" no es decoración: evita que el paso de archivado trabaje en silencio sobre el objetivo equivocado. Las condiciones son especialmente valiosas alrededor de supuestos cuyo fallo sería destructivo o confuso.
exists, file, empty, eq, ne, ok, fail y command, con not para invertir. Mantenga las ramas lo bastante cortas para que un lector entienda por qué existe cada camino.
if dir "$source"
stat "$source"
else
stop "Project directory is missing"
endCapture la salida cuando la siguiente decisión dependa de ella
capture name <command> ejecuta un comando lil normal y guarda su resultado plano en una variable. Built-ins como $last, $status, $cwd y $line exponen estado común de ejecución.
No captura todo solo porque puede. El texto del terminal es útil cuando es pequeño y estable; archivos estructurados o comandos de formato dedicados son mejores cuando los datos deben sobrevivir entre herramientas o en el tiempo.
capture current pwd -s
if empty "$current"
stop "Current directory is unavailable"
endDecida qué significa un fallo antes de automatizar
Por defecto, stop permite terminar con una razón comprensible para una persona.
Pruebe primero los flujos de trabajo desconocidos con -n. La simulación valida y expande los comandos sin ejecutarlos; -v muestra después la salida completa de una ejecución real. Esta vista previa permite entender la automatización antes de que haga cambios.
run workflow.lil -nrun workflow.lil -vDivida flujos de trabajo grandes por responsabilidad, no por número de líneas
Un flujo de trabajo puede ejecutar
.lil no es cifrado: protege formato e integridad frente a ediciones accidentales, no confidencialidad ni autoría.
run -p workflow.lil workflow.packed.lilrun workflow.packed.lilLa automatización tiene deliberadamente menos privilegios que una persona interactiva
Los comandos interactivos de interfaz se bloquean en los flujos normales, y los comandos privilegiados no interactivos como @command tampoco está disponible dentro de scripts
Esa fricción es intencional. Un flujo de trabajo reproducible debe declarar sus dependencias de módulos antes de ejecutarse y no debería instalar código, pedir secretos o destruir el terminal de forma inesperada a mitad de la ejecución.
Guárdalo como script
Guarde esto como workflow.lil, cree lil-playground/project si quiere probar la rama de éxito y ejecútelo primero con
set root lil-playground
set source lil-playground/project
set archive lil-playground/project.zip
if not dir "$root"
stop "lil-playground is missing"
end
if dir "$source"
capture current pwd -s
zip "$source" "$archive" -f
stat "$archive"
else
stop "Project directory is missing"
end