package util

import (
	"os/exec"
)

func Execute(name string, arg ...string) (*exec.Cmd, string, error) {
	cmd := exec.Command(name, arg...)
	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, 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
}