mirror of
https://github.com/openfaas/faasd.git
synced 2025-06-08 16:06:47 +00:00
Updates godoc and adds Add() method instead of using append on the private slice. Signed-off-by: Alex Ellis (OpenFaaS Ltd) <alexellis2@gmail.com>
38 lines
703 B
Go
38 lines
703 B
Go
package pkg
|
|
|
|
import (
|
|
"log"
|
|
)
|
|
|
|
func buildInstallOrder(svcs []Service) []string {
|
|
graph := Graph{nodes: []*Node{}}
|
|
|
|
nodeMap := map[string]*Node{}
|
|
for _, s := range svcs {
|
|
n := &Node{Name: s.Name}
|
|
nodeMap[s.Name] = n
|
|
graph.nodes = append(graph.nodes, n)
|
|
}
|
|
|
|
for _, s := range svcs {
|
|
for _, d := range s.DependsOn {
|
|
nodeMap[s.Name].Edges = append(nodeMap[s.Name].Edges, nodeMap[d])
|
|
}
|
|
}
|
|
|
|
resolved := &Graph{}
|
|
unresolved := &Graph{}
|
|
for _, g := range graph.nodes {
|
|
resolve(g, resolved, unresolved)
|
|
}
|
|
|
|
log.Printf("Start-up order:\n")
|
|
order := []string{}
|
|
for _, node := range resolved.nodes {
|
|
log.Printf("- %s\n", node.Name)
|
|
order = append(order, node.Name)
|
|
}
|
|
|
|
return order
|
|
}
|