[actions/unix_command] init
This commit is contained in:
76
actions/unix_command.go
Normal file
76
actions/unix_command.go
Normal file
@@ -0,0 +1,76 @@
|
||||
package actions
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"os/exec"
|
||||
|
||||
"unknown.com/gokill/internal"
|
||||
)
|
||||
|
||||
type Command struct {
|
||||
Command string `json:"command"`
|
||||
Args []string `json:"args"`
|
||||
ActionChan chan bool
|
||||
}
|
||||
|
||||
func (c Command) DryExecute() {
|
||||
fmt.Printf("Test Executing Command:\n%s ", c.Command)
|
||||
for _, arg := range c.Args {
|
||||
fmt.Printf("%s ", arg)
|
||||
}
|
||||
|
||||
fmt.Println("")
|
||||
c.ActionChan <- true
|
||||
}
|
||||
|
||||
func (c Command) Execute() {
|
||||
cmd := exec.Command(c.Command, c.Args...)
|
||||
|
||||
stdout, err := cmd.Output()
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
}
|
||||
|
||||
fmt.Println(string(stdout[:]))
|
||||
|
||||
c.ActionChan <- true
|
||||
}
|
||||
|
||||
func CreateCommand(config internal.ActionConfig, c chan bool) (Command, error) {
|
||||
result := Command{}
|
||||
|
||||
err := json.Unmarshal(config.Options, &result)
|
||||
|
||||
if err != nil {
|
||||
return Command{}, err
|
||||
}
|
||||
|
||||
if result.Command == "" {
|
||||
return Command{}, internal.OptionMissingError{"command"}
|
||||
}
|
||||
|
||||
result.ActionChan = c
|
||||
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (cc Command) Create(config internal.ActionConfig, c chan bool) (Action, error) {
|
||||
return CreateCommand(config, c)
|
||||
}
|
||||
|
||||
func (p Command) GetName() string {
|
||||
return "Command"
|
||||
}
|
||||
|
||||
func (p Command) GetDescription() string {
|
||||
return "When triggered executes given command"
|
||||
}
|
||||
|
||||
func (p Command) GetOptions() []internal.ConfigOption {
|
||||
return []internal.ConfigOption{
|
||||
{"command", "string", "command to execute", ""},
|
||||
{"args", "string[]", "args", ""},
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user