Pular para o conteúdo principal
Versão: Próxima

Table e Spin

Componentes de exibição de dados e indicador de carregamento.

Table

Exibir e opcionalmente selecionar de dados tabulares.

Uso Básico

# From a CSV file
invowk tui table --file data.csv

# From stdin with separator
echo -e "name|age|city
Alice|30|NYC
Bob|25|LA" | invowk tui table --separator "|"

Opções

OpçãoDescrição
--fileArquivo CSV para exibir
--separatorSeparador de coluna (padrão: ,)
--columnsCabeçalhos de coluna (sobrescreve cabeçalho do arquivo)
--widthsLarguras de coluna (inteiros separados por vírgula)
--selectablePermitir seleção de linha
--heightAltura da tabela

Exemplos

# Display CSV
invowk tui table --file users.csv

# Custom separator (TSV)
invowk tui table --file data.tsv --separator $' '

# Pipe-separated
cat data.txt | invowk tui table --separator "|"

Tabelas Selecionáveis

# Select a row
SELECTED=$(invowk tui table --file servers.csv --selectable)
echo "Selected: $SELECTED"

A linha selecionada é retornada como a linha CSV completa.

Exemplos do Mundo Real

Exibir Lista de Servidores

# servers.csv:
# name,ip,status
# web-1,10.0.0.1,running
# web-2,10.0.0.2,running
# db-1,10.0.0.3,stopped

invowk tui table --file servers.csv

Selecionar e SSH

# Select a server
SERVER=$(cat servers.csv | invowk tui table --selectable | cut -d',' -f2)
ssh "user@$SERVER"

Lista de Processos

ps aux --no-headers | awk '{print $1","$2","$11}' | 
(echo "USER,PID,COMMAND"; cat) |
invowk tui table --selectable

Spin

Mostrar um spinner enquanto executa um comando longo.

Uso Básico

invowk tui spin --title "Installing..." -- npm install

Opções

OpçãoDescrição
--titleTítulo/mensagem do spinner
--typeTipo de animação do spinner

Tipos de Spinner

Animações de spinner disponíveis:

  • line - Linha simples
  • dot - Pontos
  • minidot - Pontos pequenos
  • jump - Pontos pulando
  • pulse - Ponto pulsante
  • points - Pontos
  • globe - Globo girando
  • moon - Fases da lua
  • monkey - Macaco
  • meter - Medidor de progresso
  • hamburger - Menu hamburger
  • ellipsis - Reticências
invowk tui spin --type globe --title "Downloading..." -- curl -O https://example.com/file
invowk tui spin --type moon --title "Building..." -- make build
invowk tui spin --type pulse --title "Testing..." -- npm test

Exemplos

# Basic spinner
invowk tui spin --title "Building..." -- go build ./...

# With specific type
invowk tui spin --type dot --title "Installing dependencies..." -- npm install

# Long-running task
invowk tui spin --title "Compiling assets..." -- webpack --mode production

Spinners Encadeados

echo "Step 1/3: Dependencies"
invowk tui spin --title "Installing..." -- npm install

echo "Step 2/3: Build"
invowk tui spin --title "Building..." -- npm run build

echo "Step 3/3: Tests"
invowk tui spin --title "Testing..." -- npm test

echo "Done!" | invowk tui style --foreground "#00FF00" --bold

Tratamento de Código de Saída

O comando spin retorna o código de saída do comando encapsulado:

if invowk tui spin --title "Testing..." -- npm test; then
echo "Tests passed!"
else
echo "Tests failed!"
exit 1
fi

Em Scripts

{
name: "deploy"
description: "Deploy with progress indication"
implementations: [{
script: """
echo "Deploying application..."

invowk tui spin --title "Building Docker image..." --
docker build -t myapp .

invowk tui spin --title "Pushing to registry..." --
docker push myapp

invowk tui spin --title "Updating Kubernetes..." --
kubectl rollout restart deployment/myapp

invowk tui spin --title "Waiting for rollout..." --
kubectl rollout status deployment/myapp

echo "Deployment complete!" | invowk tui style --foreground "#00FF00" --bold
"""
runtimes: [{name: "native"}]
platforms: [{name: "linux"}, {name: "macos"}]
}]
}

Padrões Combinados

Selecionar e Executar com Spinner

# Choose what to build
PROJECT=$(invowk tui choose --title "Build which project?" api web worker)

# Build with spinner
invowk tui spin --title "Building $PROJECT..." -- make "build-$PROJECT"

Seleção de Tabela com Ação de Spinner

# Select server
SERVER=$(invowk tui table --file servers.csv --selectable | cut -d',' -f1)

# Restart with spinner
invowk tui spin --title "Restarting $SERVER..." -- ssh "$SERVER" "systemctl restart myapp"

Próximos Passos