refactoring barExtenderRev
Vladimir Bauer
3 years ago
| 82 | 82 | |
| 83 | 83 | func middleware(base mpb.BarFiller, id uint32) mpb.BarFiller { |
| 84 | 84 | var done bool |
| 85 | fn := func(w io.Writer, st decor.Statistics) { | |
| 85 | fn := func(w io.Writer, st decor.Statistics) error { | |
| 86 | 86 | if !done { |
| 87 | 87 | cur := atomic.LoadUint32(&curTask) == id |
| 88 | 88 | if !cur { |
| 89 | fmt.Fprintf(w, " Taksk %02d\n", id) | |
| 90 | return | |
| 89 | _, err := fmt.Fprintf(w, " Taksk %02d\n", id) | |
| 90 | return err | |
| 91 | 91 | } |
| 92 | 92 | if !st.Completed { |
| 93 | fmt.Fprintf(w, "=> Taksk %02d\n", id) | |
| 94 | return | |
| 93 | _, err := fmt.Fprintf(w, "=> Taksk %02d\n", id) | |
| 94 | return err | |
| 95 | 95 | } |
| 96 | 96 | done = cur |
| 97 | 97 | } |
| 98 | fmt.Fprintf(w, " Taksk %02d: Done!\n", id) | |
| 98 | _, err := fmt.Fprintf(w, " Taksk %02d: Done!\n", id) | |
| 99 | return err | |
| 99 | 100 | } |
| 100 | 101 | if base == nil { |
| 101 | 102 | return mpb.BarFillerFunc(fn) |
| 102 | 103 | } |
| 103 | return mpb.BarFillerFunc(func(w io.Writer, st decor.Statistics) { | |
| 104 | fn(w, st) | |
| 105 | base.Fill(w, st) | |
| 104 | return mpb.BarFillerFunc(func(w io.Writer, st decor.Statistics) error { | |
| 105 | err := fn(w, st) | |
| 106 | if err != nil { | |
| 107 | return err | |
| 108 | } | |
| 109 | return base.Fill(w, st) | |
| 106 | 110 | }) |
| 107 | 111 | } |
| 108 | 112 | |
| 109 | 113 | func newLineMiddleware(base mpb.BarFiller) mpb.BarFiller { |
| 110 | return mpb.BarFillerFunc(func(w io.Writer, st decor.Statistics) { | |
| 111 | fmt.Fprintln(w) | |
| 112 | base.Fill(w, st) | |
| 114 | return mpb.BarFillerFunc(func(w io.Writer, st decor.Statistics) error { | |
| 115 | _, err := fmt.Fprintln(w) | |
| 116 | if err != nil { | |
| 117 | return err | |
| 118 | } | |
| 119 | return base.Fill(w, st) | |
| 113 | 120 | }) |
| 114 | 121 | } |
| 115 | 122 |