CopyToGDriver.sh (v0.2.1)O script CopyToGDriver.sh é o núcleo orquestrador do projeto CopyToGDriver.
Ele é responsável por detectar automaticamente o sistema operacional, carregar os módulos corretos (crossplatform, Windows, Linux ou macOS), e executar a rotina principal de sincronização de arquivos.
Essa arquitetura modular e multiplataforma garante que o projeto funcione de forma consistente em Windows (via Git Bash/WSL), Linux e macOS, sem precisar editar o código para cada ambiente.
“Carregar dinamicamente o ambiente correto e orquestrar os módulos essenciais do CopyToGDriver.”
O script:
main) definido nos módulos;Contém informações sobre:
Bloco de 5 linhas que garante execução correta em Linux/macOS mesmo que o script tenha sido salvo com quebras de linha do Windows (\r\n).
if [[ "$(uname -s)" =~ (Linux|Darwin) ]] && grep -q $'\r' "$0"; then
sed -i 's/\r$//' "$0"
exec "$0" "$@"
exit $?
fi
Detecta automaticamente o ambiente e armazena o resultado em $PLATFORM.
| Sistema | Valor atribuído |
|---|---|
| Linux | linux |
| macOS | macos |
| Git Bash / WSL / Cygwin | windows |
| Outro | unknown |
normalize_path)Ajusta caminhos automaticamente entre sistemas:
/c/Users/... para C:\Users\... em Windows;O script carrega módulos universais e específicos da plataforma:
| Include | Caminho | Função |
|---|---|---|
🧠 crossplatform_utils.sh |
includes/crossplatform/ |
Funções de detecção, logging, path e dependências |
🛡️ crlf_protect.sh |
includes/crossplatform/ |
Corrige CRLF e reinicia execução |
🌍 platform_loader.sh |
includes/crossplatform/ |
Carrega módulos corretos por sistema operacional |
💽 disk_utils.sh |
includes/crossplatform/ |
Gerencia espaço e uso de disco |
🪟 path_utils.sh |
includes/windows/ |
Conversão de caminhos Windows ↔ Git Bash |
⚙️ platform_detector.sh |
Raiz do projeto | Detecta e define variáveis do ambiente |
🔗 include_loader.sh |
Raiz do projeto | Responsável por inicializar todos os includes principais |
A função verify_dependencies confirma se todos os módulos obrigatórios do projeto estão presentes:
| Módulo | Nome do arquivo |
|---|---|
| Utils | CopyToGDriver_Utils.sh |
| Config | CopyToGDriver_Config.sh |
| ConfigFunctions | CopyToGDriver_ConfigFunctions.sh |
| Checks | CopyToGDriver_Checks.sh |
| Cache | CopyToGDriver_Cache.sh |
| Setup | CopyToGDriver_Setup.sh |
| Sync | CopyToGDriver_Sync.sh |
Caso algum módulo esteja ausente, o script exibe uma mensagem de erro e finaliza a execução.
--check-only)Permite testar a integridade da instalação sem executar sincronização:
./CopyToGDriver.sh --check-only
Saída esperada:
🔍 Verificando módulos do CopyToGDriver...
✅ Todas as dependências foram verificadas com sucesso!
✅ Verificação concluída. Nenhuma sincronização executada.
Após carregar todos os módulos, o script:
main;main "$@" com os parâmetros originais.Se main não for encontrada, exibe um erro informando para verificar CopyToGDriver_Sync.sh.
O script inclui variáveis de debug comentadas, que podem ser ativadas para diagnóstico rápido:
# echo "DEBUG: PLATFORM=$PLATFORM"
# echo "DEBUG: SCRIPT_DIR=$SCRIPT_DIR"
# echo "DEBUG: Includes carregados com sucesso."
./CopyToGDriver.sh
./CopyToGDriver.sh --check-only
bash CopyToGDriver.sh
| Requisito | Descrição |
|---|---|
bash >= 4.0 |
Shell mínimo suportado |
df, du, awk, sed |
Utilitários nativos de Unix |
wmic (opcional) |
Para leitura de discos no Windows |
Git Bash / WSL |
Para execução no Windows |
CopyToGDriver/
├── CopyToGDriver.sh ← Script principal (este)
├── CopyToGDriver_Utils.sh
├── CopyToGDriver_Config.sh
├── CopyToGDriver_Sync.sh
├── includes/
│ ├── crossplatform/
│ │ ├── crossplatform_utils.sh
│ │ ├── crlf_protect.sh
│ │ ├── platform_loader.sh
│ │ ├── disk_utils.sh
│ ├── windows/
│ │ ├── path_utils.sh
│ ├── linux/
│ │ ├── (opcional)
│ ├── macos/
│ │ ├── (opcional)
| Versão | Data | Alterações |
|---|---|---|
| 0.1.0 | Inicial | Estrutura básica e verificação de módulos |
| 0.2.0 | Prévia multiplataforma | Adicionada detecção automática e normalize_path |
| 0.2.1 | Atual | Inclusões automáticas, proteção CRLF e crossplatform completo |
Criar o arquivo includes/crossplatform/platform_loader.sh (v1.0.0)
→ Responsável por escolher automaticamente os módulos corretos de cada SO.
Padronizar a função main dentro de CopyToGDriver_Sync.sh.
Criar CopyToGDriver_Installer.sh com integração automática e autodetecção de plataforma (baseado neste mesmo modelo).