clockwork extends base cogger to add named cogs with dependency lists. clockwork also contains functionality to do a graph topological sort to determine what order to call the cogs in. It currently calls all cogs in a series but is being upgraded to call all cogs that can be in parallel.
package main
import (
"gopkg.in/cogger/cogger.v1/cogs"
"github.com/cogger/clockwork"
"github.com/cogger/clockwork/spring"
"golang.org/x/net/context"
)
func init() {
keySprng := spring.New("a",cogs.NoOp,"b","c")
clockwork.Add(keySprng)
clockwork.AddCog("b",cogs.NoOp())
clockwork.AddCog("c",cogs.NoOp(),"b")
cog, err := clockwork.Wind(context.Background(),keySprng)
...
}