Início Rápido
Vamos executar seu primeiro comando Invowk™ em menos de 2 minutos. Sério, pegue um café antes se quiser - você terá tempo de sobra.
Crie Seu Primeiro Invowkfile
Navegue até qualquer diretório de projeto e inicialize um invowkfile:
cd my-project
invowk init
Isso cria um invowkfile.cue com um comando hello que funciona nos três runtimes (native, virtual e container). Vamos dar uma olhada:
// Invowkfile - Command definitions for invowk
// See https://github.com/invowk/invowk for documentation
cmds: [
{
name: "hello"
description: "Print a greeting"
implementations: [
{
script: "echo "Hello, $INVOWK_ARG_NAME!""
runtimes: [{name: "native"}]
platforms: [{name: "linux"}, {name: "macos"}]
},
{
script: "Write-Output "Hello, $($env:INVOWK_ARG_NAME)!""
runtimes: [{name: "native"}]
platforms: [{name: "windows"}]
},
{
script: "echo "Hello, $INVOWK_ARG_NAME!""
runtimes: [{name: "virtual"}]
platforms: [{name: "linux"}, {name: "macos"}, {name: "windows"}]
},
{
script: "echo "Hello from container, $INVOWK_ARG_NAME!""
runtimes: [{name: "container", image: "debian:stable-slim"}]
platforms: [{name: "linux"}]
},
]
args: [
{name: "name", description: "Who to greet", default_value: "World"},
]
},
]
O template padrão inclui um único comando hello com quatro implementações: native (Unix e Windows), virtual (multiplataforma) e container. Cada implementação declara quais plataformas ela suporta.
Listar Comandos Disponíveis
Veja quais comandos estão disponíveis:
invowk cmd
Você verá algo como:
Available Commands
(* = default runtime)
From invowkfile:
hello - Print a greeting [native*, virtual, container] (linux, macos, windows)
A listagem mostra o nome do comando, descrição, runtimes permitidos (padrão marcado com *) e plataformas suportadas.
Executar um Comando
Agora vamos executar um:
invowk cmd hello
Saída:
Hello, World!
É isso! Você acabou de executar seu primeiro comando Invowk.
Passar um Argumento
O comando hello aceita um argumento opcional name (padrão "World"). Tente passar seu nome:
# Pass an argument to the hello command
invowk cmd hello Alice
# Use a different runtime
invowk cmd hello --ivk-runtime virtual
Saída:
Hello, Alice!
Argumentos são expostos como variáveis de ambiente INVOWK_ARG_<NOME>, tornando-os acessíveis de qualquer runtime.
Experimente o Runtime Virtual
Um dos superpoderes do Invowk é o runtime virtual - um interpretador de shell integrado que funciona da mesma forma em todas as plataformas:
// The virtual runtime uses the built-in mvdan/sh interpreter
// It works identically on Linux, macOS, and Windows
{
script: "echo "Hello, $INVOWK_ARG_NAME!""
runtimes: [{name: "virtual"}]
platforms: [{name: "linux"}, {name: "macos"}, {name: "windows"}]
}
O runtime virtual usa o interpretador mvdan/sh, proporcionando comportamento consistente de shell POSIX em todas as plataformas - sem necessidade de implementações separadas para Unix e Windows.
Próximos Passos
Você acabou de arranhar a superfície! Vá para Seu Primeiro Invowkfile para aprender como criar comandos mais poderosos com:
- Múltiplas opções de runtime (native, virtual, container)
- Dependências que são validadas antes da execução
- Flags e argumentos de comando
- Variáveis de ambiente
- E muito mais!