func StdLibFile(p string) string {
	return path.Join(StdLibDir(), p)
}
StdLibFile takes a path in the stdlib and
joins it to the directory path
package util
import (
	"crypto/md5"
	"crypto/rand"
	"crypto/sha256"
	"encoding/hex"
	"fmt"
	"io"
	"io/ioutil"
	"math"
	"os"
	"os/exec"
	"path"
	"path/filepath"
	"runtime"
	"strings"
	"time"
	"github.com/geode-lang/geode/pkg/util/log"
	"github.com/shibukawa/configdir"
)
func RunCommand(command string, args ...string) ([]byte, error) {
	var out []byte
	var err error
	log.Verbose("%s %s\n", command, strings.Join(args, " "))
	tmpcmd := command + " " + strings.Join(args, " ")
	maxLen := 500
	if len(tmpcmd) > maxLen {
		tmpcmd = tmpcmd[:maxLen-3] + "..."
	}
	title := fmt.Sprintf("Command Execution (%s)", tmpcmd)
	fullcommand := fmt.Sprintf("%s %s", command, strings.Join(args, " "))
	log.Timed(title, func() {
		cmd := exec.Command("bash", "-c", fullcommand)
		out, err = cmd.CombinedOutput()
	})
	if err != nil {
		return out, err
	}
	return out, err
}
func RunCommandStr(command string, args ...string) (string, error) {
	b, e := RunCommand(command, args...)
	return string(b), e
}
func BashCmd(command string) (string, error) {
	return RunCommandStr("bash", "-c", fmt.Sprintf("\"%s\"", command))
}
func StdLibDir() string {
	libpath := os.Getenv("GEODELIB")
	if libpath == "" {
		libpath = "/usr/local/lib/geodelib"
	} else {
		absPath, err := filepath.Abs(libpath)
		if err != nil {
			panic(fmt.Errorf("unable to locate absolute directory of standard library at %q", libpath))
		}
		libpath = absPath
	}
	return libpath
}