Function
loading
(initialMsg, doneMsg, failMsg string, fn func() error)
Source from the content-addressed store, hash-verified
| 30 | } |
| 31 | |
| 32 | func loading(initialMsg, doneMsg, failMsg string, fn func() error) error { |
| 33 | done := make(chan struct{}) |
| 34 | errc := make(chan error) |
| 35 | go func() { |
| 36 | defer close(done) |
| 37 | |
| 38 | s := spinner.New(spinner.CharSets[11], 100*time.Millisecond, spinner.WithWriter(iostream.Messages)) |
| 39 | s.Prefix = initialMsg |
| 40 | s.FinalMSG = doneMsg |
| 41 | s.HideCursor = true |
| 42 | s.Writer = iostream.Messages |
| 43 | |
| 44 | if err := s.Color(spinnerColor); err != nil { |
| 45 | panic(auth0.Error(err, "failed setting spinner color")) |
| 46 | } |
| 47 | |
| 48 | s.Start() |
| 49 | err := <-errc |
| 50 | if err != nil { |
| 51 | s.FinalMSG = failMsg |
| 52 | } |
| 53 | |
| 54 | s.Stop() |
| 55 | }() |
| 56 | |
| 57 | err := fn() |
| 58 | errc <- err |
| 59 | <-done |
| 60 | return err |
| 61 | } |
Tested by
no test coverage detected