mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Kindsys: Unify plugins, pfs with kind framework (#61192)
* New pfs impl * Reached codegen parity with old system * Update all models.cue inputs * Rename all models.cue files * Remove unused prefixfs * Changes Queries->DataQuery schema interface * Recodegen * All tests passing, nearly good now * Add SchemaInterface to kindsys props * Add pascal name deriver * Relocate plugin cue files again * Clarify use of injected fields * Remove unnecessary aliasing * Move DataQuery into mudball * Allow forcing ExpandReferences on go type generation * Move DataQuery def into kindsys, add generator to copy it to common * Fix copy generator to replace package name correctly * Fix duplicate type, test failure * Fix linting issues
This commit is contained in:
@@ -3,7 +3,6 @@ package pfs
|
||||
import (
|
||||
"fmt"
|
||||
"io/fs"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"sort"
|
||||
@@ -24,7 +23,9 @@ func NewDeclParser(rt *thema.Runtime, skip map[string]bool) *declParser {
|
||||
}
|
||||
}
|
||||
|
||||
// TODO convert this to be the new parser for Tree
|
||||
func (psr *declParser) Parse(root fs.FS) ([]*PluginDecl, error) {
|
||||
// TODO remove hardcoded tree structure assumption, work from root of provided fs
|
||||
plugins, err := fs.Glob(root, "**/**/plugin.json")
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error finding plugin dirs: %w", err)
|
||||
@@ -39,31 +40,26 @@ func (psr *declParser) Parse(root fs.FS) ([]*PluginDecl, error) {
|
||||
}
|
||||
|
||||
dir := os.DirFS(path)
|
||||
ptree, err := ParsePluginFS(dir, psr.rt)
|
||||
pp, err := ParsePluginFS(dir, psr.rt)
|
||||
if err != nil {
|
||||
log.Println(fmt.Errorf("parsing plugin failed for %s: %s", dir, err))
|
||||
return nil, fmt.Errorf("parsing plugin failed for %s: %s", dir, err)
|
||||
}
|
||||
|
||||
if len(pp.ComposableKinds) == 0 {
|
||||
decls = append(decls, EmptyPluginDecl(path, pp.Properties))
|
||||
continue
|
||||
}
|
||||
|
||||
p := ptree.RootPlugin()
|
||||
slots := p.SlotImplementations()
|
||||
|
||||
if len(slots) == 0 {
|
||||
decls = append(decls, EmptyPluginDecl(path, p.Meta()))
|
||||
continue
|
||||
}
|
||||
|
||||
for slotName, lin := range slots {
|
||||
for slotName, kind := range pp.ComposableKinds {
|
||||
slot, err := kindsys.FindSchemaInterface(slotName)
|
||||
if err != nil {
|
||||
log.Println(fmt.Errorf("parsing plugin failed for %s: %s", dir, err))
|
||||
continue
|
||||
return nil, fmt.Errorf("parsing plugin failed for %s: %s", dir, err)
|
||||
}
|
||||
decls = append(decls, &PluginDecl{
|
||||
SchemaInterface: &slot,
|
||||
Lineage: lin,
|
||||
Imports: p.CUEImports(),
|
||||
PluginMeta: p.Meta(),
|
||||
Lineage: kind.Lineage(),
|
||||
Imports: pp.CUEImports,
|
||||
PluginMeta: pp.Properties,
|
||||
PluginPath: path,
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user