github.com/vmware/transport-go@v1.3.4/plank/pkg/server/banner.go (about)

     1  package server
     2  
     3  import (
     4  	"fmt"
     5  	imgcolor "image/color"
     6  	"os"
     7  	"runtime"
     8  
     9  	"github.com/eliukblau/pixterm/pkg/ansimage"
    10  	"github.com/fatih/color"
    11  	"github.com/vmware/transport-go/plank/utils"
    12  )
    13  
    14  // printBanner prints out banner as well as brief server config
    15  func (ps *platformServer) printBanner() {
    16  	// print out ascii art only if output is stdout
    17  	if ps.out == os.Stdout {
    18  		fs, err := logoFs.Open("logo.png")
    19  		if err != nil {
    20  			goto bannerBody
    21  		}
    22  		defer fs.Close()
    23  		_, _ = fmt.Fprintf(ps.out, "\n\n")
    24  		img, err := ansimage.NewScaledFromReader(
    25  			fs,
    26  			40,
    27  			80,
    28  			imgcolor.Transparent,
    29  			ansimage.ScaleModeResize,
    30  			ansimage.NoDithering)
    31  		if err != nil {
    32  			panic(err)
    33  		}
    34  		// print out logo in ASCII art
    35  		img.SetMaxProcs(runtime.NumCPU())
    36  		img.Draw()
    37  	}
    38  
    39  	// display title and config summary
    40  bannerBody:
    41  	_, _ = fmt.Fprintln(ps.out)
    42  	color.Set(color.BgHiWhite, color.FgHiBlack, color.Bold)
    43  	_, _ = fmt.Fprintf(ps.out, " P L A N K ")
    44  	color.Unset()
    45  	_, _ = fmt.Fprintln(ps.out)
    46  	utils.InfoFprintf(ps.out, "Host\t\t\t")
    47  	_, _ = fmt.Fprintln(ps.out, ps.serverConfig.Host)
    48  	utils.InfoFprintf(ps.out, "Port\t\t\t")
    49  	_, _ = fmt.Fprintln(ps.out, ps.serverConfig.Port)
    50  
    51  	if ps.serverConfig.FabricConfig != nil {
    52  		utils.InfoFprintf(ps.out, "Fabric endpoint\t\t")
    53  		if ps.serverConfig.FabricConfig.UseTCP {
    54  			_, _ = fmt.Fprintln(ps.out, fmt.Sprintf(":%d (TCP)", ps.serverConfig.FabricConfig.TCPPort))
    55  			return
    56  		}
    57  		_, _ = fmt.Fprintln(ps.out, ps.serverConfig.FabricConfig.FabricEndpoint)
    58  	}
    59  
    60  	if len(ps.serverConfig.StaticDir) > 0 {
    61  		utils.InfoFprintf(ps.out, "Static endpoints\t")
    62  		for i, dir := range ps.serverConfig.StaticDir {
    63  			_, p := utils.DeriveStaticURIFromPath(dir)
    64  			_, _ = fmt.Fprint(ps.out, p)
    65  			if i < len(ps.serverConfig.StaticDir)-1 {
    66  				_, _ = fmt.Fprint(ps.out, ", ")
    67  			} else {
    68  				_, _ = fmt.Fprint(ps.out, "\n")
    69  			}
    70  		}
    71  	}
    72  
    73  	if ps.serverConfig.SpaConfig != nil {
    74  		utils.InfoFprintf(ps.out, "SPA endpoint\t\t")
    75  		_, _ = fmt.Fprintln(ps.out, ps.serverConfig.SpaConfig.BaseUri)
    76  		utils.InfoFprintf(ps.out, "SPA static assets\t")
    77  		if len(ps.serverConfig.SpaConfig.StaticAssets) == 0 {
    78  			_, _ = fmt.Fprint(ps.out, "-")
    79  		}
    80  		for idx, asset := range ps.serverConfig.SpaConfig.StaticAssets {
    81  			_, uri := utils.DeriveStaticURIFromPath(asset)
    82  			_, _ = fmt.Fprint(ps.out, utils.SanitizeUrl(uri, false))
    83  			if idx < len(ps.serverConfig.SpaConfig.StaticAssets)-1 {
    84  				_, _ = fmt.Fprint(ps.out, ", ")
    85  			}
    86  		}
    87  		_, _ = fmt.Fprintln(ps.out)
    88  	}
    89  
    90  	utils.InfoFprintf(ps.out, "Health endpoint\t\t")
    91  	_, _ = fmt.Fprintln(ps.out, "/health")
    92  
    93  	if ps.serverConfig.EnablePrometheus {
    94  		utils.InfoFprintf(ps.out, "Prometheus endpoint\t")
    95  		_, _ = fmt.Fprintln(ps.out, "/prometheus")
    96  	}
    97  
    98  	_, _ = fmt.Fprintln(ps.out)
    99  
   100  }