in internal/satellite/tools/generate_plugin_doc.go [89:131]
func updateMenuPluginListDoc(outputRootPath, menuFilePath, pluginFilePath string, categories []reflect.Type) error {
menuFile := fmt.Sprintf("%s%s", outputRootPath, menuFilePath)
menu, err := LoadCatalog(menuFile)
if err != nil {
return err
}
// find plugin Catalog
pluginCatalog := menu.Find("Setup", "Plugins")
if pluginCatalog == nil {
return fmt.Errorf("cannot find plugins Catalog")
}
// remove path
pluginCatalog.Path = ""
// rebuild all plugins
var allPlugins []*Catalog
for _, category := range categories {
// plugin
implements := []*Catalog{}
curPlugin := &Catalog{
Name: cases.Title(language.Und, cases.NoLower).String(strings.ToLower(category.Name())),
}
// all implements
pluginList := getPluginsByCategory(category)
for _, pluginName := range pluginList {
implements = append(implements, &Catalog{
Name: pluginName.showName,
Path: strings.TrimRight(fmt.Sprintf("%s/%s", pluginFilePath, getPluginDocFileName(category, pluginName.defineName)), markdownSuffix),
})
}
curPlugin.Catalog = implements
if len(implements) > 0 {
allPlugins = append(allPlugins, curPlugin)
}
}
pluginCatalog.Catalog = allPlugins
return menu.Save(menuFile)
}