https://github.com/mugomes/mgrun
MGRun é um wrapper leve em Go para exec que simplifica a execução de comandos do shell com suporte nativo a callbacks em tempo real para as saídas de sistema.
https://github.com/mugomes/mgrun
exec go golang process shell subprocess
Last synced: 3 months ago
JSON representation
MGRun é um wrapper leve em Go para exec que simplifica a execução de comandos do shell com suporte nativo a callbacks em tempo real para as saídas de sistema.
- Host: GitHub
- URL: https://github.com/mugomes/mgrun
- Owner: mugomes
- License: mit
- Created: 2025-12-29T16:27:52.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2025-12-29T18:21:14.000Z (6 months ago)
- Last Synced: 2026-01-01T21:34:27.658Z (6 months ago)
- Topics: exec, go, golang, process, shell, subprocess
- Language: Go
- Homepage:
- Size: 7.81 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# MGRun
**MGRun** é um wrapper leve e multiplataforma em Go para execução de comandos do sistema, projetado para simplificar o uso de `exec` com **captura de saída em tempo real**, **callbacks** e **controle seguro de concorrência**.
Ideal para aplicações CLI, ferramentas de automação, instaladores, utilitários desktop e sistemas que precisam acompanhar a execução de comandos enquanto eles ainda estão rodando.
---
## ✨ Recursos
* 🌍 **Multiplataforma**
Abstrai automaticamente a execução entre:
* PowerShell (Windows)
* SH (Linux e macOS)
* 📡 **Streaming em tempo real**
Receba cada linha de `stdout` e `stderr` via callbacks enquanto o processo executa.
* 🧵 **Thread-safe**
Leitura concorrente segura das streams e controle confiável do processo.
* 🏠 **Ambiente herdado**
* Executa comandos a partir do diretório *Home* do usuário
* Herda variáveis de ambiente do sistema
* Permite adicionar variáveis customizadas
* 🔁 **Código de saída acessível**
Obtenha o *exit code* após a finalização do processo.
---
## 📦 Instalação
```bash
go get github.com/mugomes/mgrun
```
---
## 🚀 Exemplo de uso
```go
package main
import (
"fmt"
"os"
"github.com/mugomes/mgrun"
)
func main() {
sRun := mgrun.New("ls -a")
// Definir diretório de execução (opcional)
pathHome, _ := os.UserHomeDir()
sRun.SetDir(pathHome)
// Variáveis de ambiente extras (opcional)
sRun.AddEnv("EXEMPLO", "Valor")
// Callback para stderr
sRun.OnStderr(func(line string) {
fmt.Printf("[STDERR]: %s\n", line)
})
// Callback para stdout
sRun.OnStdout(func(line string) {
fmt.Printf("[STDOUT]: %s\n", line)
})
// Executa o comando
if err := sRun.Run(); err != nil {
fmt.Printf("Erro na execução: %v\n", err)
}
fmt.Printf("Exit Code: %d\n", sRun.ExitCode())
}
```
---
## ⚙️ Requisitos
* **Go** 1.25.5 ou superior
* **PowerShell** (apenas no Windows)
---
## 🖥️ Sistemas Operacionais
* ✔️ Linux
* ✔️ Windows
* ✔️ macOS (Darwin)
---
## 👤 Autor
**Murilo Gomes Julio**
🔗 [https://mugomes.github.io](https://mugomes.github.io)
📺 [https://youtube.com/@mugomesoficial](https://youtube.com/@mugomesoficial)
---
## License
Copyright (c) 2025-2026 Murilo Gomes Julio
Licensed under the [MIT](https://github.com/mugomes/mgrun/blob/main/LICENSE) license.
All contributions to the MGRun are subject to this license.