aceberg/LinuxExecBot

View on GitHub
internal/bot/command.go

Summary

Maintainability
A
0 mins
Test Coverage
package bot

import (
    "log"
    "os/exec"

    "github.com/aceberg/LinuxExecBot/internal/check"
    "github.com/aceberg/LinuxExecBot/internal/models"
)

func execCommand(command, args string, data models.Data) string {

    log.Println("INFO: received command:", command)
    log.Println("INFO: received arguments:", args)

    out := "Unknown command"
    for _, oneCommand := range data.Coms {
        if oneCommand.Name == command && oneCommand.Exec != "" {

            var err error
            var cmd []byte
            if data.Conf.Args == "yes" {
                log.Println("INFO: executing", oneCommand.Exec, args)
                cmd, err = exec.Command("sh", "-c", oneCommand.Exec+" "+args).Output()
                check.IfError(err)
            } else {
                log.Println("INFO: executing", oneCommand.Exec)
                cmd, err = exec.Command("sh", "-c", oneCommand.Exec).Output()
                check.IfError(err)
            }

            out = string(cmd)
            break
        }
        if command == "help" {
            if out == "Unknown command" {
                out = "Available commands: \n"
            }

            out = out + "/" + oneCommand.Name + " - " + oneCommand.Desc + "\n"
        }
    }

    return out
}