Files
mpbot-github/ci/mpbb.go
2020-06-11 23:57:28 +02:00

59 lines
1.4 KiB
Go

package ci
import (
"bufio"
"os"
"os/exec"
)
// List all subports of a given port.
func ListSubports(port, workDir string) ([]string, error) {
listCmd := exec.Command("mpbb", "--work-dir", workDir, "list-subports", "--archive-site=", "--archive-site-private=", port)
stdout, err := listCmd.StdoutPipe()
if err != nil {
return nil, err
}
if err = listCmd.Start(); err != nil {
return nil, err
}
subports := make([]string, 0, 1)
stdoutScanner := bufio.NewScanner(stdout)
for stdoutScanner.Scan() {
line := stdoutScanner.Text()
subports = append(subports, line)
}
if err = listCmd.Wait(); err != nil {
return nil, err
}
return subports, nil
}
// mpbbToLog executes `mpbb` and saves output to a file at logFilePath.
func mpbbToLog(command, port, workDir, logFilePath string, commandArg ...string) error {
var mpbbCmd *exec.Cmd
args := make([]string, 0, 2)
if workDir != "" {
args = append(args, "--work-dir", workDir)
}
args = append(args, command)
args = append(args, commandArg...)
args = append(args, port)
mpbbCmd = exec.Command("mpbb", args...)
logFile, err := os.Create(logFilePath)
if err != nil {
return err
}
defer logFile.Close()
logWriter := bufio.NewWriter(logFile)
defer logWriter.Flush()
// other logs in workDir/logs
mpbbCmd.Stdout = logWriter
mpbbCmd.Stderr = logWriter
if err = mpbbCmd.Run(); err != nil {
return err
}
return nil
}