(sorts []string, nodes []*yaml.Node)
| 88 | return nil |
| 89 | } |
| 90 | func pluginItemUnmarshalYAML(sorts []string, nodes []*yaml.Node) ([]*plugin_model.Define, error) { |
| 91 | if len(nodes) == 0 { |
| 92 | return nil, fmt.Errorf("yaml: error decoding plugin is empty") |
| 93 | } |
| 94 | type defineItem struct { |
| 95 | *plugin_model.Define |
| 96 | sort int |
| 97 | } |
| 98 | sortBase := len(sorts) + 1 |
| 99 | Items := make([]*defineItem, 0, len(nodes)/2-2) |
| 100 | for i := 0; i < len(nodes); i += 2 { |
| 101 | k := nodes[i].Value |
| 102 | v := nodes[i+1] |
| 103 | it := new(defineT) |
| 104 | |
| 105 | err := v.Decode(&it) |
| 106 | if err != nil { |
| 107 | log.Printf("yaml: error decoding %s: %v", v.Value, err) |
| 108 | return nil, err |
| 109 | } |
| 110 | Items = append(Items, &defineItem{ |
| 111 | |
| 112 | Define: &plugin_model.Define{ |
| 113 | Extend: it.Id, |
| 114 | Name: k, |
| 115 | Cname: it.CName, |
| 116 | Desc: it.Desc, |
| 117 | Kind: plugin_model.ParseKind(it.Kind), |
| 118 | Status: plugin_model.ParseStatus(it.Status), |
| 119 | Config: it.Config, |
| 120 | }, |
| 121 | sort: i + sortBase, |
| 122 | }) |
| 123 | } |
| 124 | |
| 125 | sortValues := make(map[string]int, len(sorts)) |
| 126 | for i, v := range sorts { |
| 127 | sortValues[v] = i |
| 128 | } |
| 129 | |
| 130 | for _, v := range Items { |
| 131 | if s, has := sortValues[v.Name]; has { |
| 132 | v.sort = s |
| 133 | } |
| 134 | extend := v.Extend |
| 135 | extend = strings.Replace(extend, ".", "_", -1) |
| 136 | //extend = strings.Replace(extend, "-", "_", -1) |
| 137 | extend = strings.Replace(extend, ":", "_", -1) |
| 138 | renderBody, err := renders.ReadFile(fmt.Sprintf("render/%s.json", extend)) |
| 139 | if err != nil { |
| 140 | return nil, err |
| 141 | } |
| 142 | renderObj := new(defineRender) |
| 143 | err = json.Unmarshal(renderBody, renderObj) |
| 144 | if err != nil { |
| 145 | return nil, err |
| 146 | } |
| 147 | v.Render = renderObj.Render |
no test coverage detected