Filter e File
Componentes de busca e seleção de arquivos.
Filter
Filtrar fuzzy através de uma lista de opções.
Uso Básico
# From arguments
invowk tui filter "apple" "banana" "cherry" "date"
# From stdin
ls | invowk tui filter
Opções
| Opção | Descrição |
|---|---|
--title | Prompt do filtro |
--placeholder | Placeholder de busca |
--width | Largura do filtro |
--height | Altura da lista |
--limit | Máximo de seleções (padrão: 1) |
--no-limit | Seleções ilimitadas |
--reverse | Exibir lista em ordem reversa |
--fuzzy | Habilitar fuzzy matching |
Exemplos
# Filter files
FILE=$(ls | invowk tui filter --title "Select file")
# Multi-select filter
FILES=$(ls *.go | invowk tui filter --no-limit --title "Select Go files")
# With placeholder
ITEM=$(invowk tui filter --placeholder "Type to search..." opt1 opt2 opt3)
Exemplos do Mundo Real
Selecionar Branch Git
BRANCH=$(git branch --list | tr -d '* ' | invowk tui filter --title "Checkout branch")
git checkout "$BRANCH"
Selecionar Container Docker
CONTAINER=$(docker ps --format "{{.Names}}" | invowk tui filter --title "Select container")
docker logs -f "$CONTAINER"
Selecionar Processo para Matar
PID=$(ps aux | invowk tui filter --title "Select process" | awk '{print $2}')
if [ -n "$PID" ]; then
kill "$PID"
fi
Filtrar Comandos
CMD=$(invowk cmd 2>/dev/null | grep "^ " | invowk tui filter --title "Run command")
# Extract command name and run it
File
Seletor de arquivos e diretórios com navegação.
Uso Básico
# Pick any file from current directory
invowk tui file
# Start in specific directory
invowk tui file /home/user/documents
Opções
| Opção | Descrição |
|---|---|
--title | Título exibido acima do seletor |
--description | Descrição abaixo do título |
--directory | Mostrar apenas diretórios |
--file | Mostrar apenas arquivos |
--hidden | Mostrar arquivos ocultos |
--allowed | Filtrar por extensões |
--height | Altura do seletor |
Exemplos
# Pick a file
FILE=$(invowk tui file)
echo "Selected: $FILE"
# Only directories
DIR=$(invowk tui file --directory)
# Show hidden files
FILE=$(invowk tui file --hidden)
# Filter by extension
FILE=$(invowk tui file --allowed ".go,.md,.txt")
# Multiple extensions
CONFIG=$(invowk tui file --allowed ".yaml,.yml,.json,.toml")
Navegação
No seletor de arquivos:
- Cima/Baixo: Navegar
- Enter: Selecionar arquivo ou entrar no diretório
- Backspace: Ir para diretório pai
- Esc/Ctrl+C: Cancelar
Exemplos do Mundo Real
Selecionar Arquivo de Configuração
CONFIG=$(invowk tui file --allowed ".yaml,.yml,.json" /etc/myapp)
echo "Using config: $CONFIG"
./myapp --config "$CONFIG"
Selecionar Diretório de Projeto
PROJECT=$(invowk tui file --directory ~/projects)
cd "$PROJECT"
code .
Selecionar Script para Executar
SCRIPT=$(invowk tui file --allowed ".sh,.bash" ./scripts)
if [ -n "$SCRIPT" ]; then
chmod +x "$SCRIPT"
"$SCRIPT"
fi
Selecionar Arquivo de Log
LOG=$(invowk tui file --allowed ".log" /var/log)
less "$LOG"
Em Scripts
{
name: "edit-config"
description: "Edit a configuration file"
implementations: [{
script: """
CONFIG=$(invowk tui file --allowed ".yaml,.yml,.json,.toml" ./config)
if [ -z "$CONFIG" ]; then
echo "No file selected."
exit 0
fi
# Open in default editor
${EDITOR:-vim} "$CONFIG"
"""
runtimes: [{name: "native"}]
platforms: [{name: "linux"}, {name: "macos"}]
}]
}
Padrões Combinados
Buscar e Editar
# Find file by content, then pick from results
FILE=$(grep -l "TODO" *.go 2>/dev/null | invowk tui filter --title "Select file with TODOs")
if [ -n "$FILE" ]; then
vim "$FILE"
fi
Diretório e Depois Arquivo
# First pick directory
DIR=$(invowk tui file --directory ~/projects)
# Then pick file in that directory
FILE=$(invowk tui file "$DIR" --allowed ".go")
echo "Selected: $FILE"
Próximos Passos
- Table e Spin - Exibição de dados e spinners
- Visão Geral - Todos os componentes TUI