fun with wait groups; prevents hanging
This commit is contained in:
parent
3998a07086
commit
d4031420ab
|
@ -176,13 +176,30 @@ func cleanupContent(client *winrm.Client, filePath string) error {
|
|||
}
|
||||
|
||||
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 {
|
||||
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.Close()
|
||||
wg.Wait()
|
||||
|
||||
if cmd.ExitCode() != 0 {
|
||||
return fmt.Errorf("cleanup operation returned code=%d", cmd.ExitCode())
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
@ -959,10 +959,10 @@
|
|||
"revision": "179d4d0c4d8d407a32af483c2354df1d2c91e6c3"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "iApv8tX8vuAvzyY6VkOvW+IzJF8=",
|
||||
"checksumSHA1": "XXmfaQ8fEupEgaGd6PptrLnrE54=",
|
||||
"path": "github.com/packer-community/winrmcp/winrmcp",
|
||||
"revision": "078cc0a785c9da54158c0775f06f505fc1e867f8",
|
||||
"revisionTime": "2017-06-07T14:21:56Z"
|
||||
"revision": "e1b7d6e6b1b1a27984270784190f1d06ad91888b",
|
||||
"revisionTime": "2017-09-29T21:51:32Z"
|
||||
},
|
||||
{
|
||||
"checksumSHA1": "oaXvjFg802gS/wx1bx2gAQwa7XQ=",
|
||||
|
|
Loading…
Reference in New Issue