File tree Expand file tree Collapse file tree 1 file changed +51
-0
lines changed
Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Original file line number Diff line number Diff line change 1+ package ui
2+
3+ import (
4+ "fmt"
5+ "strings"
6+
7+ "github.com/majiayu000/caude-skill-manager/internal/skill"
8+ "github.com/majiayu000/caude-skill-manager/pkg/styles"
9+ )
10+
11+ // RenderSkillTable renders skills as a table.
12+ func RenderSkillTable (skills []skill.Skill ) string {
13+ if len (skills ) == 0 {
14+ return styles .MutedStyle .Render ("No skills installed yet.\n \n Run " ) +
15+ styles .CodeStyle .Render ("sk install <github-url>" ) +
16+ styles .MutedStyle .Render (" to install your first skill." )
17+ }
18+
19+ var b strings.Builder
20+
21+ header := fmt .Sprintf (" %-25s %-50s" , "NAME" , "DESCRIPTION" )
22+ b .WriteString (styles .TableHeaderStyle .Render (header ))
23+ b .WriteString ("\n " )
24+
25+ for _ , s := range skills {
26+ name := s .Name
27+ if len (name ) > 25 {
28+ name = name [:22 ] + "..."
29+ }
30+
31+ desc := s .Description
32+ if len (desc ) > 50 {
33+ desc = desc [:47 ] + "..."
34+ }
35+ if desc == "" {
36+ desc = styles .MutedStyle .Render ("(no description)" )
37+ }
38+
39+ row := fmt .Sprintf (" %-25s %-50s" ,
40+ styles .SuccessStyle .Render (name ),
41+ styles .SkillDescStyle .Render (desc ),
42+ )
43+ b .WriteString (row )
44+ b .WriteString ("\n " )
45+ }
46+
47+ b .WriteString ("\n " )
48+ b .WriteString (styles .MutedStyle .Render (fmt .Sprintf (" %d skill(s) installed" , len (skills ))))
49+
50+ return b .String ()
51+ }
You can’t perform that action at this time.
0 commit comments