package util

import (
	"cicv-data-closedloop/plugin-compile/package/config/c_log"
	"os/exec"
)

func Execute(name string, arg ...string) (*exec.Cmd, string, error) {
	cmd := exec.Command(name, arg...)
	combinedOutput, err := cmd.CombinedOutput()
	if err != nil {
		c_log.GlobalLogger.Info("命令", name, " ", arg, "执行出错:", err)
		return nil, string(combinedOutput), err
	}
	return cmd, string(combinedOutput), nil
}

func ExecuteWithDir(dir string, name string, arg ...string) (*exec.Cmd, string, error) {
	cmd := exec.Command(name, arg...)
	cmd.Dir = dir
	combinedOutput, err := cmd.CombinedOutput()
	if err != nil {
		return nil, "", err
	}
	return cmd, string(combinedOutput), nil
}

func ExecuteWithEnvAndDir(envs []string, dir string, name string, arg ...string) (*exec.Cmd, string, error) {
	cmd := exec.Command(name, arg...)
	cmd.Dir = dir
	for _, env := range envs {
		cmd.Env = append(cmd.Env, env)
	}
	combinedOutput, err := cmd.CombinedOutput()
	if err != nil {
		return nil, string(combinedOutput), err
	}
	return cmd, string(combinedOutput), nil
}

//func ExecuteWithEnvAndDir(envs []string, dir string, name string, arg ...string) (*exec.Cmd, error) {
//	cmd := exec.Command(name, arg...)
//	cmd.Dir = dir
//	for _, env := range envs {
//		cmd.Env = append(cmd.Env, env)
//	}
//	if err := cmd.Run(); err != nil {
//		return nil, err
//	}
//	return cmd, nil
//}