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 }