Files
dingtalk-workspace-cli/internal/helpers/devdoc.go
T

62 lines
2.0 KiB
Go

package helpers
import (
"strconv"
"github.com/spf13/cobra"
)
func newDevdocCommand() *cobra.Command {
root := &cobra.Command{
Use: "devdoc",
Short: "开放平台文档搜索",
Long: `搜索钉钉开放平台开发文档。默认以表格格式输出(标题、URL),使用 -f json 获取原始 JSON。`,
RunE: groupRunE,
}
articleCmd := &cobra.Command{Use: "article", Short: "文档文章", RunE: groupRunE}
articleCmd.AddCommand(newDevdocArticleSearchCommand())
root.AddCommand(articleCmd)
root.AddCommand(hintSubCmd("search", "use: dws devdoc article search --query <关键词>"))
return root
}
func newDevdocArticleSearchCommand() *cobra.Command {
cmd := &cobra.Command{
Use: "search [keyword]",
Short: "搜索开放平台文档",
Long: `按关键词搜索 open.dingtalk.com 文档,支持分页。默认表格输出,可用 -f json 获取完整响应。`,
Example: ` dws devdoc article search "MCP"
dws devdoc article search --query "MCP" --page 1 --size 10
dws devdoc article search --query "openConversationId" --page 2 --size 5`,
Args: cobra.MaximumNArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
if len(args) > 0 && flagOrFallback(cmd, "query", "keyword") == "" {
_ = cmd.Flags().Set("query", args[0])
}
if err := validateRequiredFlagWithAliases(cmd, "query", "keyword"); err != nil {
return err
}
page, _ := strconv.Atoi(mustGetFlag(cmd, "page"))
if page < 1 {
page = 1
}
size, _ := strconv.Atoi(mustGetFlag(cmd, "size"))
if size < 1 {
size = 10
}
return callMCPTool("search_open_platform_docs", map[string]any{
"keyword": flagOrFallback(cmd, "query", "keyword"),
"page": page,
"size": size,
})
},
}
cmd.Flags().String("query", "", "搜索关键词 (必填)")
cmd.Flags().String("keyword", "", "搜索关键词 (--query 的别名)")
_ = cmd.Flags().MarkHidden("keyword")
cmd.Flags().String("page", "1", "页码,默认 1")
cmd.Flags().String("size", "10", "每页数量,默认 10")
return cmd
}