88
99type Application struct {
1010 deps []func () * Dependency
11- List map [string ]any
11+ List map [string ][] any
1212 Cfg * Config
13- init map [string ]func (cfg * Config , list map [ string ]any ) (any , error )
13+ init map [string ]func (cfg * Config , list [ ]any ) (any , error )
1414 start map [string ]func (cfg * Config , dep any ) error
1515 depLists [][]string
1616 depSeq []string
@@ -19,12 +19,12 @@ type Application struct {
1919type Dependency struct {
2020 name string
2121 deps []string
22- init func (cfg * Config , list map [ string ]any ) (any , error )
22+ init func (cfg * Config , list [ ]any ) (any , error )
2323 start func (cfg * Config , dep any ) error
2424}
2525
2626func NewDependency (name string , deps []string ,
27- init func (cfg * Config , list map [ string ]any ) (any , error ),
27+ init func (cfg * Config , list [ ]any ) (any , error ),
2828 start func (cfg * Config , dep any ) error ) * Dependency {
2929 return & Dependency {
3030 name : name ,
@@ -37,9 +37,9 @@ func NewDependency(name string, deps []string,
3737func New () * Application {
3838 return & Application {
3939 deps : make ([]func () * Dependency , 0 ),
40- List : make (map [string ]any ),
40+ List : make (map [string ][] any ),
4141 Cfg : NewConfig (),
42- init : make (map [string ]func (cfg * Config , list map [ string ]any ) (any , error )),
42+ init : make (map [string ]func (cfg * Config , list [ ]any ) (any , error )),
4343 start : make (map [string ]func (cfg * Config , dep any ) error ),
4444 depLists : [][]string {},
4545 depSeq : []string {},
@@ -68,6 +68,7 @@ func (a *Application) Start() {
6868 }
6969 names = append (names , dependency .name )
7070 deps = append (deps , dependency .deps ... )
71+ a .List [dependency .name ] = []any {nil , dependency .deps }
7172 }
7273 for _ , dep := range deps {
7374 if ! slices .Contains (names , dep ) {
@@ -77,16 +78,21 @@ func (a *Application) Start() {
7778 BuildInitSeq (a .depLists , & a .depSeq )
7879 for _ , name := range a .depSeq {
7980 fmt .Printf ("Initializing depndency %s\n " , name )
80- dep , err := a .init [name ](a .Cfg , a .List )
81+ depList := a .List [name ][1 ].([]string )
82+ var list []any
83+ for _ , dName := range depList {
84+ list = append (list , a .List [dName ][0 ])
85+ }
86+ dep , err := a .init [name ](a .Cfg , list )
8187 if err != nil {
8288 fmt .Printf ("Error nitializing depndency %s\n " , name )
8389 panic (err )
8490 }
85- a .List [name ] = dep
91+ a .List [name ][ 0 ] = dep
8692 }
8793 for name , start := range a .start {
8894 fmt .Printf ("Starting component %s\n " , name )
89- err := start (a .Cfg , a .List [name ])
95+ err := start (a .Cfg , a .List [name ][ 0 ] )
9096 if err != nil {
9197 fmt .Printf ("Error starting component %s\n " , name )
9298 panic (err )
0 commit comments