40 lines
816 B
Markdown
40 lines
816 B
Markdown
|
# Shelly
|
||
|
|
||
|
An abstraction for shell directly in GO
|
||
|
|
||
|
## Goal
|
||
|
|
||
|
Simplify process spawning and execution on top of exec.Command function.
|
||
|
|
||
|
The proposal is: use a string based approach for launching other process - as if you were calling a shell, but instead,
|
||
|
its go directly executing your commands.
|
||
|
|
||
|
Example:
|
||
|
|
||
|
```go
|
||
|
|
||
|
package main
|
||
|
|
||
|
import "go.digitalcircle.com.br/open/shelly"
|
||
|
import "os"
|
||
|
import "os/exec"
|
||
|
|
||
|
func main(){
|
||
|
err := shelly.Exec(`
|
||
|
ls -larth
|
||
|
pwd
|
||
|
whoami
|
||
|
date`, &shelly.Opts{
|
||
|
SetupProc: func(cmd *exec.Cmd) {
|
||
|
cmd.Stdout = os.Stdout
|
||
|
cmd.Stderr = os.Stderr
|
||
|
},
|
||
|
})
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Please note: Commands may be connected by `;` and `\n`. In any case they will be executed sequentially.
|
||
|
`&` will come later (pending implementation), and will allow processes to run in parallel.
|