De uma sequência para um fluxo de trabalho: deixe o `.lil` tomar decisões
Um script linear é suficiente enquanto a resposta for sempre “faça A, depois B, depois C”. Quando é preciso verificar um diretório, reutilizar um caminho, guardar um resultado ou parar com um motivo claro, você já está construindo um fluxo de trabalho, não apenas uma lista.
Use a menor linguagem de automação que resolva a tarefa
Um arquivo que começa com #lil usa o executor linear do Core: comandos comuns são executados em ordem, e essa simplicidade é uma vantagem. Ele é ideal para listas de instalação, diagnósticos repetíveis e procedimentos curtos.
install runhelp runVariáveis transformam caminhos copiados em intenção nomeada
set root lil-playground dá um papel a um caminho. Depois, $root, $source e $archive explicam o significado dos valores em vez de obrigar você a editar o mesmo valor literal em cinco lugares.
Bons nomes de variável tornam o script portátil. Deixe valores específicos do ambiente perto do começo, mantenha segredos fora e prefira poucas variáveis claras a construções de string engenhosas.
set root lil-playground
set source lil-playground/project
set archive lil-playground/project.zipUma condição deve proteger uma premissa
if dir "$source" não é decoração: ele impede que a etapa de compactação opere silenciosamente sobre o alvo errado. Condições são mais valiosas em torno de premissas que, sem proteção, virariam falhas destrutivas ou confusas.
exists, file, empty, eq, ne, ok, fail e command, com not para inversão. Mantenha os branches curtos o bastante para que ainda seja óbvio por que cada caminho existe.
if dir "$source"
stat "$source"
else
stop "Project directory is missing"
endCapture o resultado quando a próxima decisão depender dele
capture name <command> executa um comando lil comum e guarda seu resultado em texto simples numa variável. Built-ins como $last, $status, $cwd e $line expõem estados comuns da execução.
Não captura tudo só porque é possível. Texto do terminal é útil quando é pequeno e estável; arquivos estruturados ou comandos de formato dedicados são melhores quando os dados precisam sobreviver entre ferramentas ou ao longo do tempo.
capture current pwd -s
if empty "$current"
stop "Current directory is unavailable"
endDefina o que uma falha significa antes de automatizar
Por padrão, stop permite encerrar com um motivo compreensível para uma pessoa.
Execute fluxos de trabalho desconhecidos primeiro com -n. O execução de teste valida e expande comandos sem executá-los; depois -v mostra o resultado completo durante uma execução real. A prévia não é burocracia — é como a automação continua compreensível.
run workflow.lil -nrun workflow.lil -vDivida fluxos de trabalho grandes por responsabilidade, não por número de linhas
Um fluxo de trabalho pode executar
.lil packed não é criptografia: protege formato e integridade contra edições acidentais, não confidencialidade nem autoria.
run -p workflow.lil workflow.packed.lilrun workflow.packed.lilA automação tem, de propósito, menos privilégios que uma pessoa interativa
Comandos interativos de interface são bloqueados em fluxos comuns, e comandos privilegiados não interativos como @command também não fica disponível dentro de scripts
Essa fricção é intencional. Um fluxo de trabalho reproduzível deve declarar suas dependências de módulos antes da execução e não deve instalar código inesperadamente, pedir segredos nem destruir o terminal no meio de um run.
Guarde isto como script
Salve isto como workflow.lil, crie o diretório lil-playground/project se quiser testar o caminho de sucesso e execute primeiro
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