in internal/fabric/stages.go [255:297]
func (s *Stage) Destroy(vars []*terraform.Vars, verbose bool) error {
var wg sync.WaitGroup
var files []string
// make some channels
done := make(chan bool)
err := make(chan error)
// extract var files from stage
for _, f := range s.StageVars {
files = append(files, f.LocalPath)
}
// start an overwatch
if !verbose {
go utils.ProgressTicker(s.Name, &wg, done)
}
// do what we came here to do
go func() {
destroyErr := terraform.TfDestroy(s.Path, files, vars, nil, verbose)
if !verbose {
done <- true // only fire this channel if ticker is running
}
err <- destroyErr
}()
// catch any errors
tfError := <-err
// wait for stuff to finish
wg.Wait()
// turndown the channels
close(done)
close(err)
if tfError != nil {
return tfError
}
return nil
}