func findTreejson(globs pb.GlobResponse) ([]byte, error) { var b bytes.Buffer var tree = make([]treejson, 0) seen := make(map[string]struct{}) basepath := globs.GetName() if i := strings.LastIndex(basepath, "."); i != -1 { basepath = basepath[:i+1] } for _, g := range globs.GetMatches() { name := g.GetPath() if i := strings.LastIndex(name, "."); i != -1 { name = name[i+1:] } if _, ok := seen[name]; ok { continue } seen[name] = struct{}{} t := treejson{ ID: basepath + name, Context: treejsonContext, Text: name, } if g.GetIsLeaf() { t.Leaf = 1 } else { t.AllowChildren = 1 t.Expandable = 1 } tree = append(tree, t) } err := json.NewEncoder(&b).Encode(tree) return b.Bytes(), err }