flipace/hantera

View on GitHub
lib/run.go

Summary

Maintainability
A
0 mins
Test Coverage
package lib

import (
    "bytes"
    "fmt"
    "os/exec"
    "strings"
)

func check(err error, outBuf bytes.Buffer, errBuf bytes.Buffer) {
    if err != nil {
        fmt.Printf(
            "An error occured.\n\nCommand output:%s\nCommand error:\n%s",
            outBuf.String(),
            errBuf.String(),
        )
    }
}

// Run : executes a process with the given parameters
func Run(progress bool, target string, handleError bool, commands ...string) (bytes.Buffer, bytes.Buffer) {
    cmd := exec.Command("sh", "-c", strings.Join(commands, " "))
    cmd.Dir = target

    var outBuff bytes.Buffer
    var errBuff bytes.Buffer

    if progress {
        cmd.Stdout = &outBuff
        cmd.Stderr = &errBuff
    }

    err := cmd.Start()
    if handleError {
        check(err, outBuff, errBuff)
    }

    err = cmd.Wait()
    if handleError {
        check(err, outBuff, errBuff)
    }

    return outBuff, errBuff
}