func()

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
}