fun with wait groups; prevents hanging

This commit is contained in:
Megan Marsh 2017-09-29 15:03:44 -07:00
parent 3998a07086
commit d4031420ab
2 changed files with 22 additions and 5 deletions

View File

@ -176,13 +176,30 @@ func cleanupContent(client *winrm.Client, filePath string) error {
} }
defer shell.Close() defer shell.Close()
cmd, err := shell.Execute("powershell", "Remove-Item", filePath, "-ErrorAction SilentlyContinue") script := fmt.Sprintf(`Remove-Item %s -ErrorAction SilentlyContinue`, filePath)
cmd, err := shell.Execute(winrm.Powershell(script))
if err != nil { if err != nil {
return err return err
} }
defer cmd.Close()
var wg sync.WaitGroup
copyFunc := func(w io.Writer, r io.Reader) {
defer wg.Done()
io.Copy(w, r)
}
wg.Add(2)
go copyFunc(os.Stdout, cmd.Stdout)
go copyFunc(os.Stderr, cmd.Stderr)
cmd.Wait() cmd.Wait()
cmd.Close() wg.Wait()
if cmd.ExitCode() != 0 {
return fmt.Errorf("cleanup operation returned code=%d", cmd.ExitCode())
}
return nil return nil
} }

6
vendor/vendor.json vendored
View File

@ -959,10 +959,10 @@
"revision": "179d4d0c4d8d407a32af483c2354df1d2c91e6c3" "revision": "179d4d0c4d8d407a32af483c2354df1d2c91e6c3"
}, },
{ {
"checksumSHA1": "iApv8tX8vuAvzyY6VkOvW+IzJF8=", "checksumSHA1": "XXmfaQ8fEupEgaGd6PptrLnrE54=",
"path": "github.com/packer-community/winrmcp/winrmcp", "path": "github.com/packer-community/winrmcp/winrmcp",
"revision": "078cc0a785c9da54158c0775f06f505fc1e867f8", "revision": "e1b7d6e6b1b1a27984270784190f1d06ad91888b",
"revisionTime": "2017-06-07T14:21:56Z" "revisionTime": "2017-09-29T21:51:32Z"
}, },
{ {
"checksumSHA1": "oaXvjFg802gS/wx1bx2gAQwa7XQ=", "checksumSHA1": "oaXvjFg802gS/wx1bx2gAQwa7XQ=",