github.com/nextlinux/gosbom@v0.81.1-0.20230627115839-1ff50c281391/internal/ui/etui_event_handlers.go (about)

     1  //go:build linux || darwin || netbsd
     2  // +build linux darwin netbsd
     3  
     4  package ui
     5  
     6  import (
     7  	"context"
     8  	"fmt"
     9  	"io"
    10  	"sync"
    11  
    12  	"github.com/gookit/color"
    13  	gosbomEventParsers "github.com/nextlinux/gosbom/gosbom/event/parsers"
    14  	"github.com/nextlinux/gosbom/internal"
    15  	"github.com/wagoodman/go-partybus"
    16  	"github.com/wagoodman/jotframe/pkg/frame"
    17  )
    18  
    19  // handleAppUpdateAvailable is a UI handler function to display a new application version to the top of the screen.
    20  func handleAppUpdateAvailable(_ context.Context, fr *frame.Frame, event partybus.Event, _ *sync.WaitGroup) error {
    21  	newVersion, err := gosbomEventParsers.ParseAppUpdateAvailable(event)
    22  	if err != nil {
    23  		return fmt.Errorf("bad AppUpdateAvailable event: %w", err)
    24  	}
    25  
    26  	line, err := fr.Prepend()
    27  	if err != nil {
    28  		return err
    29  	}
    30  
    31  	message := color.Magenta.Sprintf("New version of %s is available: %s", internal.ApplicationName, newVersion)
    32  	_, _ = io.WriteString(line, message)
    33  
    34  	return nil
    35  }