1234567891011121314151617181920212223242526272829303132333435363738 |
- // 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
- }
|