mirror of https://github.com/k3s-io/k3s
39 lines
966 B
Go
39 lines
966 B
Go
// Copyright (c) 2017 Gorillalabs. All rights reserved.
|
|
|
|
package backend
|
|
|
|
import (
|
|
"io"
|
|
"os/exec"
|
|
|
|
"github.com/juju/errors"
|
|
)
|
|
|
|
type Local struct{}
|
|
|
|
func (b *Local) StartProcess(cmd string, args ...string) (Waiter, io.Writer, io.Reader, io.Reader, error) {
|
|
command := exec.Command(cmd, args...)
|
|
|
|
stdin, err := command.StdinPipe()
|
|
if err != nil {
|
|
return nil, nil, nil, nil, errors.Annotate(err, "Could not get hold of the PowerShell's stdin stream")
|
|
}
|
|
|
|
stdout, err := command.StdoutPipe()
|
|
if err != nil {
|
|
return nil, nil, nil, nil, errors.Annotate(err, "Could not get hold of the PowerShell's stdout stream")
|
|
}
|
|
|
|
stderr, err := command.StderrPipe()
|
|
if err != nil {
|
|
return nil, nil, nil, nil, errors.Annotate(err, "Could not get hold of the PowerShell's stderr stream")
|
|
}
|
|
|
|
err = command.Start()
|
|
if err != nil {
|
|
return nil, nil, nil, nil, errors.Annotate(err, "Could not spawn PowerShell process")
|
|
}
|
|
|
|
return command, stdin, stdout, stderr, nil
|
|
}
|