wails-release/internal/cleanup/cleanup.go

25 lines
580 B
Go
Raw Normal View History

package cleanup
// Stack holds deferred cleanup functions and runs them in LIFO order.
// Errors are collected; one cleanup failure does not stop later ones.
type Stack struct {
fns []func() error
}
// Add registers fn to run on Run().
func (s *Stack) Add(fn func() error) {
s.fns = append(s.fns, fn)
}
// Run executes all registered functions in reverse order and returns
// every error produced.
func (s *Stack) Run() []error {
var errs []error
for i := len(s.fns) - 1; i >= 0; i-- {
if err := s.fns[i](); err != nil {
errs = append(errs, err)
}
}
return errs
}