@@ -24,6 +24,7 @@ import (
2424// ResolverInterface defines the resolver interface that takes dependency configs and resolves them
2525type ResolverInterface interface {
2626 Resolve (ctx devspacecontext.Context ) ([]types.Dependency , error )
27+ WithParser (parser loader.Parser ) ResolverInterface
2728}
2829
2930// Resolver implements the resolver interface
@@ -32,6 +33,7 @@ type resolver struct {
3233
3334 BaseCache localcache.Cache
3435 BaseConfig * latest.Config
36+ BaseParser loader.Parser
3537
3638 ConfigOptions * loader.ConfigOptions
3739}
@@ -90,6 +92,16 @@ func (r *resolver) Resolve(ctx devspacecontext.Context) ([]types.Dependency, err
9092 return children , nil
9193}
9294
95+ func (r * resolver ) WithParser (parser loader.Parser ) ResolverInterface {
96+ if r == nil {
97+ return nil
98+ }
99+
100+ n := * r
101+ n .BaseParser = parser
102+ return & n
103+ }
104+
93105func (r * resolver ) resolveRecursive (ctx devspacecontext.Context , basePath , parentConfigName string , currentDependency * Dependency , dependencies []* latest.DependencyConfig ) error {
94106 if currentDependency != nil {
95107 currentDependency .children = []types.Dependency {}
@@ -206,7 +218,11 @@ func (r *resolver) resolveDependency(ctx devspacecontext.Context, dependencyConf
206218 return err
207219 }
208220
209- dConfigWrapper , err = configLoader .Load (ctx .Context (), client , cloned , ctx .Log ())
221+ if r .BaseParser == nil {
222+ dConfigWrapper , err = configLoader .Load (ctx .Context (), client , cloned , ctx .Log ())
223+ } else {
224+ dConfigWrapper , err = configLoader .LoadWithParser (ctx .Context (), nil , client , r .BaseParser , cloned , ctx .Log ())
225+ }
210226 if err != nil {
211227 return errors .Wrap (err , fmt .Sprintf ("loading config for dependency %s" , dependencyName ))
212228 }
0 commit comments