crossplatform_utils.shBiblioteca completa que oferece funções para auto-correção de CRLF, detecção de SO, normalização de caminhos e validação de ambiente. Garante que seus scripts funcionem em qualquer sistema operacional!
source ./crossplatform_utils.sh
auto_fix_current_script "$@" # ← ADICIONE ESTA LINHA no topo dos seus scripts
O script inclui proteção embutida contra problemas de CRLF:
# 🛡️ Proteção CRLF (5 linhas mágicas)
if [[ "$(uname -s)" =~ (Linux|Darwin) ]] && grep -q $'\r' "$0"; then
sed -i 's/\r$//' "$0"
exec "$0" "$@"
exit $?
fi
detect_os_type - Detecção avançada de SODetecta o sistema operacional de forma inteligente, incluindo WSL.
Saídas possíveis: Linux, macOS, Windows, WSL, BSD, Unknown
os_type=$(detect_os_type)
echo "Sistema: $os_type"
turbo_log - Logging colorido turboExibe mensagens coloridas com timestamp e níveis de log.
Níveis: ERROR, SUCCESS, WARNING, INFO, DEBUG, TURBO
turbo_log "SUCCESS" "Operação concluída com sucesso"
turbo_log "ERROR" "Falha na execução"
normalize_path - Normalização inteligente de caminhosConverte caminhos entre formatos Windows ↔ Unix.
normalize_path "C:\Users\Documentos"
# → /c/Users/Documentos
normalize_path "C:/Windows/System32"
# → /c/Windows/System32
check_and_fix_crlf - Verificação e correção turbo de CRLFVerifica e corrige arquivos com CRLF usando múltiplos métodos de detecção.
check_and_fix_crlf "./meuscript.sh"
# [WARNING] CRLF detectado (file command) em: meuscript.sh
# [INFO] Backup criado: meuscript.sh.crlf.bak
# [SUCCESS] Conversão LF concluída: meuscript.sh
Métodos de detecção:
file command - Mais precisogrep - Fallback básicohexdump - Ultra precisoauto_fix_current_script - Auto-correção turbo do script atualCorrige o script em execução automaticamente se necessário.
#!/bin/bash
source ./crossplatform_utils.sh
auto_fix_current_script "$@" # ← PRIMEIRA instrução
# Seu código abaixo...
fix_project_scripts - Correção em lote turboCorrige todos os scripts .sh de um projeto.
fix_project_scripts "./meu_projeto"
# [SUCCESS] Concluído! Verificados: 15 | Corrigidos: 3
validate_dependencies - Valida dependências cross-platformVerifica comandos essenciais e sugere instalação específica por SO.
validate_dependencies "curl" "git" "python3" "docker"
Saída exemplo:
[INFO] Validando dependências para: Linux
[DEBUG] ✅ curl
[WARNING] Dependência não encontrada: docker
[INFO] No Debian/Ubuntu tente: sudo apt install docker
get_script_directory - Diretório do script (cross-platform)Retorna o caminho absoluto do diretório do script atual.
script_dir=$(get_script_directory)
echo "Executando de: $script_dir"
resolve_pathConverte caminhos relativos em absolutos, compatível com Linux, macOS e WSL.
resolve_path "./docs"
# → /home/paulo/docs
resolve_path "../CopyToGDriver"
# → /v/LazarusProjects/CopyToGDriver_InstallerGUI/CopyToGDriver
Métodos utilizados:
readlink -f - Linux/WSLperl -MCwd - macOS (fallback)local abs_path
abs_path=$(resolve_path "$1")
echo "Caminho absoluto: $abs_path"
demo_crossplatform - Demonstração interativaMostra todas as capacidades da biblioteca de forma prática.
./crossplatform_utils.sh
# Pergunta: "Executar demonstração interativa? (s/N)"
show_usage - Ajuda integradaExibe instruções resumidas de uso.
source ./crossplatform_utils.sh
show_usage
Modo CLI disponível:
./crossplatform_utils.sh --help # Mostra ajuda
./crossplatform_utils.sh # Mostra ajuda e pergunta sobre demo
#!/bin/bash (não #!/bin/sh)source em vez de . para melhor compatibilidade[[ ]] em vez de [ ] para condicionais| Problema | Solução |
|---|---|
| CRLF no Linux | auto_fix_current_script |
| Caminhos Windows | normalize_path |
| Permissões de execução | chmod +x seus_scripts |
| Encoding | Use UTF-8 sem BOM |
file meuscript.sh - Verifica encodingdos2unix - Conversão manual (se disponível)hexdump -C - Análise hexadecimal#!/bin/bash
# meu_script_turbo.sh
source ./crossplatform_utils.sh
auto_fix_current_script "$@"
echo "🧩 CrossPlatform Utils carregado!"
echo "📋 Sistema: $(detect_os_type)"
echo "📁 Diretório: $(get_script_directory)"
# Normalizar caminho de entrada
input_path=$(normalize_path "$1")
echo "🔧 Caminho normalizado: $input_path"
# Validar dependências
validate_dependencies "curl" "git" "jq"
# Verificar espaço em disco
available_gb=$(get_disk_space_gb "$input_path")
echo "💾 Espaço livre: ${available_gb}GB"
echo "✅ Script turbo funcionando em qualquer plataforma! 🎉"
Com CrossPlatform Utils v2.2.0, seus scripts Bash tornam-se:
🎯 Escreva uma vez, execute em qualquer sistema!
"Seu projeto agora é Turbo Multiplataforma!" 🚀