package main import ( "context" "fmt" "os" "path/filepath" "github.com/darkit/goproxy/examples/plugin" ) // 展示文档生成功能 func DocGeneratorExample() { // 创建上下文 ctx := context.Background() // 获取插件目录 pluginsDir := filepath.Join("..", "plugins", "dist") if _, err := os.Stat(pluginsDir); os.IsNotExist(err) { fmt.Printf("插件目录不存在: %s\n", pluginsDir) return } // 创建插件管理器 pm := plugin.NewPluginManager(pluginsDir) // 加载插件 fmt.Println("正在加载插件...") if err := pm.LoadPlugins(); err != nil { fmt.Printf("加载插件失败: %v\n", err) return } // 初始化所有插件 if err := pm.InitPlugins(ctx); err != nil { fmt.Printf("初始化插件失败: %v\n", err) return } // 启动所有插件 if err := pm.StartPlugins(ctx); err != nil { fmt.Printf("启动插件失败: %v\n", err) return } // 创建文档输出目录 docsDir := "./plugin_docs" if err := os.MkdirAll(docsDir, 0755); err != nil { fmt.Printf("创建文档目录失败: %v\n", err) return } fmt.Printf("将在 %s 目录生成API文档\n", docsDir) // 创建文档生成器 docGen := plugin.NewDocGenerator(pm, docsDir) // 生成所有文档 fmt.Println("正在生成API文档...") if err := docGen.GenerateAllDocs(); err != nil { fmt.Printf("生成文档失败: %v\n", err) } else { fmt.Printf("成功生成API文档!文档位于: %s\n", docsDir) fmt.Println("文档包括:") fmt.Println("- 索引页 (index.md)") fmt.Println("- 按类型分组的插件列表 (plugins_by_type.md)") fmt.Println("- 每个插件的详细文档 (<插件名>.md)") } // 停止所有插件 if err := pm.StopPlugins(ctx); err != nil { fmt.Printf("停止插件失败: %v\n", err) return } fmt.Println("\n示例结束") }