add pager tui for 'api show' (#46)

This commit is contained in:
T. von Dein
2026-06-23 11:58:52 +02:00
parent 6d31d18e0c
commit e16f2bfd0b
6 changed files with 216 additions and 21 deletions

View File

@@ -307,6 +307,7 @@ func ApiPathNames() []string {
func ApiShow(conf *cfg.Config, showpath, verb string) error {
assets.LoadAssetOpenApi()
out := printer.Builder{}
op, err := matchOperation(showpath, verb)
if err != nil {
@@ -335,43 +336,46 @@ func ApiShow(conf *cfg.Config, showpath, verb string) error {
MarginBottom(1).
MarginLeft(2)
fmt.Println(bold.Render("ID: " + op.Op.ID))
fmt.Println(paragraph.Render(fmt.Sprintf("%s %s", op.Verb, showpath)))
out.WriteStringLine(bold.Render("ID: " + op.Op.ID))
out.WriteStringLine(paragraph.Render(fmt.Sprintf("%s %s", op.Verb, showpath)))
fmt.Println(bold.Render("Tags"))
fmt.Println(paragraph.Render(strings.Join(op.Op.Tags, ", ")))
out.WriteStringLine(bold.Render("Tags"))
out.WriteStringLine(paragraph.Render(strings.Join(op.Op.Tags, ", ")))
fmt.Println(bold.Render("Summary"))
fmt.Println(paragraph.Render(strings.TrimSpace(op.Op.Summary)))
out.WriteStringLine(bold.Render("Summary"))
out.WriteStringLine(paragraph.Render(strings.TrimSpace(op.Op.Summary)))
fmt.Println(bold.Render("Description"))
fmt.Println(string(description)) // already indented
out.WriteStringLine(bold.Render("Description"))
out.WriteStringLine(string(description)) // already indented
if len(params.Path) > 0 {
fmt.Println(bold.Render("Path Parameters"))
out.WriteStringLine(bold.Render("Path Parameters"))
for _, param := range params.Path {
fmt.Println(boldparagraph.Render(param.Param))
out.WriteStringLine(boldparagraph.Render(param.Param))
if param.Description != "" {
fmt.Println(indentparagraph.Render(param.Description))
//out.WriteStringLine(indentparagraph.Render(param.Description))
out.WriteStringLine(param.Description)
}
}
}
if len(params.Query) > 0 {
fmt.Println(bold.Render("Query Parameters"))
out.WriteStringLine(bold.Render("Query Parameters"))
for _, param := range params.Query {
fmt.Println(boldparagraph.Render(param.Param))
out.WriteStringLine(boldparagraph.Render(param.Param))
if param.Description != "" {
fmt.Println(indentparagraph.Render(param.Description))
out.WriteStringLine(indentparagraph.Render(param.Description))
}
}
}
if sample != "" {
fmt.Println(bold.Render("Example"))
fmt.Println(paragraph.Render(sample))
out.WriteStringLine(bold.Render("Example"))
out.WriteStringLine(paragraph.Render(sample))
}
printer.Pager(showpath, out.String())
return nil
}