MCPcopy
hub / github.com/grafana/dskit / AddDependency

Method AddDependency

modules/modules.go:77–98  ·  view source on GitHub ↗

AddDependency adds a dependency from name(source) to dependsOn(targets) An error is returned if the source module name is not found

(name string, dependsOn ...string)

Source from the content-addressed store, hash-verified

75// AddDependency adds a dependency from name(source) to dependsOn(targets)
76// An error is returned if the source module name is not found
77func (m *Manager) AddDependency(name string, dependsOn ...string) error {
78 mod, ok := m.modules[name]
79 if !ok {
80 return fmt.Errorf("no such module: %s", name)
81 }
82
83 // Ensure it doesn't introduce any circular dependency.
84 for _, newDep := range dependsOn {
85 if _, ok := m.modules[newDep]; !ok {
86 return fmt.Errorf("no such module: %s", newDep)
87 }
88
89 for _, prevDep := range m.DependenciesForModule(newDep) {
90 if prevDep == name {
91 return fmt.Errorf("found a circular dependency: %s depends on %s", newDep, name)
92 }
93 }
94 }
95
96 mod.deps = append(mod.deps, dependsOn...)
97 return nil
98}
99
100// InitModuleServices initialises given modules by initialising all their dependencies
101// in the right order. Modules are wrapped in such a way that they start after their

Calls 2

DependenciesForModuleMethod · 0.95
ErrorfMethod · 0.80