(ep Endpoint)
| 619 | } |
| 620 | |
| 621 | func formatEndpointHelp(ep Endpoint) string { |
| 622 | cmd := "godoxy " + strings.Join(ep.CommandPath, " ") |
| 623 | var b strings.Builder |
| 624 | fmt.Fprintf(&b, "Usage: %s [flags]\n", cmd) |
| 625 | if ep.Summary != "" { |
| 626 | fmt.Fprintf(&b, "Summary: %s\n", ep.Summary) |
| 627 | } |
| 628 | if alias := aliasCommandPath(ep); len(alias) > 0 && strings.Join(alias, " ") != strings.Join(ep.CommandPath, " ") { |
| 629 | fmt.Fprintf(&b, "Alias: godoxy %s\n", strings.Join(alias, " ")) |
| 630 | } |
| 631 | params := make([]Param, 0, len(ep.Params)) |
| 632 | params = append(params, ep.Params...) |
| 633 | if ep.IsWebSocket { |
| 634 | params = append(params, Param{ |
| 635 | FlagName: "ws", |
| 636 | Type: "boolean", |
| 637 | Description: "use websocket", |
| 638 | Required: false, |
| 639 | }) |
| 640 | } |
| 641 | if len(params) == 0 { |
| 642 | return strings.TrimRight(b.String(), "\n") |
| 643 | } |
| 644 | b.WriteString("Flags:\n") |
| 645 | maxWidth := 0 |
| 646 | flagNames := make([]string, 0, len(params)) |
| 647 | for _, p := range params { |
| 648 | name := "--" + p.FlagName |
| 649 | if p.Required { |
| 650 | name += " (required)" |
| 651 | } |
| 652 | flagNames = append(flagNames, name) |
| 653 | if len(name) > maxWidth { |
| 654 | maxWidth = len(name) |
| 655 | } |
| 656 | } |
| 657 | for i, p := range params { |
| 658 | desc := p.Description |
| 659 | if desc == "" { |
| 660 | desc = p.In + " " + p.Type |
| 661 | } |
| 662 | fmt.Fprintf(&b, " %-*s %s\n", maxWidth, flagNames[i], desc) |
| 663 | } |
| 664 | return strings.TrimRight(b.String(), "\n") |
| 665 | } |
| 666 | |
| 667 | func nearestByDistance(input string, choices []string) string { |
| 668 | if len(choices) == 0 { |
no test coverage detected