func graphToEntry(g *graph.Description, path string, r library.Registrar) (*library.Entry, error) { entry := &library.Entry{ Executable: path, Description: g.Properties["name"], Inports: []library.EntryPort{}, Outports: []library.EntryPort{}, } for _, e := range g.Inports { parts := strings.SplitN(e.Private, ".", 2) rec, err := r.Get(g.Processes[parts[0]].Component) if err != nil { return nil, fmt.Errorf("Component %s not found in library", parts[0]) } port, found := rec.FindInport(strings.ToLower(parts[1])) if !found { return nil, fmt.Errorf("Port %s not found in component %s", parts[1], parts[0]) } port.Name = e.Public entry.Inports = append(entry.Inports, port) } for _, e := range g.Outports { parts := strings.SplitN(e.Private, ".", 2) rec, err := r.Get(g.Processes[parts[0]].Component) if err != nil { return nil, fmt.Errorf("Component %s not found in library", parts[0]) } port, found := rec.FindOutport(strings.ToLower(parts[1])) if !found { return nil, fmt.Errorf("Port %s not found in component %s", parts[1], parts[0]) } port.Name = e.Public entry.Outports = append(entry.Outports, port) } return entry, nil }