github.com/wtfutil/wtf@v0.43.0/modules/azuredevops/widget.go (about) 1 package azuredevops 2 3 import ( 4 "context" 5 "fmt" 6 7 azr "github.com/microsoft/azure-devops-go-api/azuredevops" 8 azrBuild "github.com/microsoft/azure-devops-go-api/azuredevops/build" 9 "github.com/pkg/errors" 10 "github.com/rivo/tview" 11 "github.com/wtfutil/wtf/view" 12 ) 13 14 type Widget struct { 15 view.TextWidget 16 cli azrBuild.Client 17 settings *Settings 18 displayBuffer string 19 ctx context.Context 20 } 21 22 func NewWidget(tviewApp *tview.Application, redrawChan chan bool, pages *tview.Pages, settings *Settings) *Widget { 23 widget := Widget{ 24 TextWidget: view.NewTextWidget(tviewApp, redrawChan, pages, settings.Common), 25 settings: settings, 26 } 27 28 widget.View.SetScrollable(true) 29 connection := azr.NewPatConnection(settings.orgURL, settings.apiToken) 30 ctx := context.Background() 31 32 cli, err := azrBuild.NewClient(ctx, connection) 33 if err != nil { 34 widget.displayBuffer = errors.Wrap(err, "could not create client 2").Error() 35 } else { 36 widget.cli = cli 37 widget.ctx = ctx 38 } 39 40 widget.refreshDisplayBuffer() 41 42 return &widget 43 } 44 45 func (widget *Widget) Refresh() { 46 widget.refreshDisplayBuffer() 47 widget.Redraw(widget.display) 48 } 49 50 func (widget *Widget) display() (string, string, bool) { 51 return widget.CommonSettings().Title, widget.displayBuffer, true 52 } 53 54 func (widget *Widget) refreshDisplayBuffer() { 55 if widget.cli == nil { 56 return 57 } 58 59 widget.displayBuffer = "" 60 61 widget.displayBuffer += fmt.Sprintf("[%s::bul] build status - %s\n", 62 widget.settings.labelColor, 63 widget.settings.projectName) 64 65 widget.displayBuffer += widget.getBuildStats() 66 }