github.com/taubyte/tau-cli@v0.1.13-0.20240326000942-487f0d57edfc/table/project/list.go (about)

     1  package projectTable
     2  
     3  import (
     4  	"os"
     5  
     6  	"github.com/jedib0t/go-pretty/v6/table"
     7  	client "github.com/taubyte/tau/clients/http/auth"
     8  )
     9  
    10  // Takes a project and returns a description
    11  type Descriptor func(project *client.Project) string
    12  
    13  func List(projects []*client.Project, descriptor Descriptor) {
    14  	ListNoRender(projects, descriptor).Render()
    15  }
    16  
    17  func ListNoRender(projects []*client.Project, descriptor Descriptor) table.Writer {
    18  	t := table.NewWriter()
    19  	t.SetOutputMirror(os.Stdout)
    20  	t.SetAllowedRowLength(79)
    21  
    22  	colConfigs := make([]table.ColumnConfig, 0)
    23  	colConfigs = append(colConfigs, table.ColumnConfig{
    24  		Name: "ID",
    25  	})
    26  	colConfigs = append(colConfigs, table.ColumnConfig{
    27  		Name: "Name",
    28  	})
    29  	colConfigs = append(colConfigs, table.ColumnConfig{
    30  		Name:     "Description",
    31  		WidthMax: 40,
    32  	})
    33  
    34  	t.SetColumnConfigs(colConfigs)
    35  	t.AppendHeader(table.Row{"ID", "Name", "Description"})
    36  	for _, project := range projects {
    37  		id := project.Id
    38  		if len(project.Id) >= 12 {
    39  			id = id[:6] + "..." + id[len(id)-6:]
    40  		}
    41  
    42  		t.AppendRow(table.Row{id, project.Name, descriptor(project)})
    43  		t.AppendSeparator()
    44  	}
    45  	t.SetStyle(table.StyleLight)
    46  
    47  	return t
    48  }