//go:build linux
// +build linux

package cm

import (
	"bytes"
	"os/exec"

	"ems.agt/lib/log"
)

func ExecCmd(command string) error {
	log.Debug("Exec command:", command)

	cmd := exec.Command("/bin/bash", "-c", command)
	out, err := cmd.CombinedOutput()
	log.Tracef("Exec output: %v", string(out))
	if err != nil {
		log.Error("exe cmd error: ", err)
		return err
	}
	/*
		if err := cmd.Start(); err != nil {
			log.Error("Start error: ", err)
			return err
		}
		if err := cmd.Wait(); err != nil {
			log.Error("Wait error: ", err)
			return err
		}
	*/
	return nil
}

func ExecShell(command string) error {
	in := bytes.NewBuffer(nil)
	cmd := exec.Command("sh")
	cmd.Stdin = in
	in.WriteString(command)
	in.WriteString("exit\n")
	if err := cmd.Start(); err != nil {
		return err
	}
	return nil
}

func ExecOsCmd(command, os string) error {
	log.Debugf("Exec %s command:%s", os, command)

	var cmd *exec.Cmd
	switch os {
	case "Linux":
		cmd = exec.Command(command)
	case "Windows":
		cmd = exec.Command("cmd", "/C", command)
	}

	out, err := cmd.CombinedOutput()
	log.Tracef("Exec output: %v", string(out))
	if err != nil {
		log.Error("exe cmd error: ", err)
		return err
	}
	return nil
}
