davidroman0O / dag

Golang DAG

Home Page:https://pkg.go.dev/github.com/silas/dag

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

dag

This is a slightly modified version of the Terraform dag code with the Terraform dependencies removed.

Example

package main

import (
	"fmt"
	"time"

	"github.com/silas/dag"
)

func main() {
	g := &dag.AcyclicGraph{}

	p := "<complete>"

	g.Add(p)

	g.Add("a")
	g.Connect(dag.BasicEdge(p, "a"))

	g.Add("b")
	g.Connect(dag.BasicEdge(p, "b"))
	g.Connect(dag.BasicEdge("b", "a"))

	g.Add("c")
	g.Connect(dag.BasicEdge(p, "c"))
	g.Connect(dag.BasicEdge("c", "a"))

	if err := g.Validate(); err != nil {
		panic(err)
	}

	g.Walk(func(v dag.Vertex) (d dag.Diagnostics) {
		key := v.(string)

		fmt.Println(key)
		time.Sleep(2 * time.Second)

		return
	})
}

About

Golang DAG

https://pkg.go.dev/github.com/silas/dag

License:Mozilla Public License 2.0


Languages

Language:Go 100.0%