mirror of
https://github.com/Luzifer/streamdeck.git
synced 2024-12-24 03:31:22 +00:00
Add "exec" action
Signed-off-by: Knut Ahlers <knut@ahlers.me>
This commit is contained in:
parent
81e4f693ae
commit
9ed2e81404
1 changed files with 36 additions and 0 deletions
36
cmd/streamdeck/action_exec.go
Normal file
36
cmd/streamdeck/action_exec.go
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os/exec"
|
||||||
|
|
||||||
|
"github.com/pkg/errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
registerAction("exec", actionExec{})
|
||||||
|
}
|
||||||
|
|
||||||
|
type actionExec struct{}
|
||||||
|
|
||||||
|
func (actionExec) Execute(attributes map[string]interface{}) error {
|
||||||
|
cmd, ok := attributes["command"].([]interface{})
|
||||||
|
if !ok {
|
||||||
|
return errors.New("No command supplied")
|
||||||
|
}
|
||||||
|
|
||||||
|
var args []string
|
||||||
|
for _, c := range cmd {
|
||||||
|
if v, ok := c.(string); ok {
|
||||||
|
args = append(args, v)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
return errors.New("Command conatins non-string argument")
|
||||||
|
}
|
||||||
|
|
||||||
|
command := exec.Command(args[0], args[1:]...)
|
||||||
|
if err := command.Start(); err != nil {
|
||||||
|
return errors.Wrap(err, "Unable to start command")
|
||||||
|
}
|
||||||
|
|
||||||
|
return errors.Wrap(command.Process.Release(), "Unable to release process")
|
||||||
|
}
|
Loading…
Reference in a new issue