@@ -36,14 +36,18 @@ void Configs::addConfig(Config &config,const Options &options,vector<Config> &co
3636 configs.push_back (config);
3737}
3838
39+ void Configs::correctDirectories (vector<Config> &configs)
40+ {
41+ for (auto & config : configs)
42+ config.correctDirectory ();
43+ }
44+
3945vector<Config> Configs::load (const Options &options)
4046{
4147 vector<Config>
4248 configs;
4349
44- loadDirectory (options,L" Dependencies" ,configs);
45- loadDirectory (options,L" OptionalDependencies" ,configs);
46-
50+ loadDependencies (options,configs);
4751 loadImageMagick (options,configs);
4852 removeInvalidReferences (options,configs);
4953 validate (options,configs);
@@ -92,6 +96,24 @@ void Configs::loadConfig(const Options &options,const wstring &name,const wstrin
9296 addConfig (config,options,configs);
9397}
9498
99+ void Configs::loadDependencies (const Options &options,vector<Config> &configs)
100+ {
101+ if (!filesystem::exists (options.rootDirectory + L" Dependencies" ))
102+ return ;
103+
104+ if (filesystem::exists (options.rootDirectory + L" Dependencies\\ Dependencies" ))
105+ {
106+ loadDirectory (options,L" Dependencies\\ Dependencies" ,configs);
107+ loadDirectory (options,L" Dependencies\\ OptionalDependencies" ,configs);
108+ correctDirectories (configs);
109+ }
110+ else
111+ {
112+ loadDirectory (options,L" Dependencies" ,configs);
113+ loadDirectory (options,L" OptionalDependencies" ,configs);
114+ }
115+ }
116+
95117void Configs::loadDirectory (const Options &options,const wstring directory,vector<Config> &configs)
96118{
97119 const auto fullProjectDirectory=options.rootDirectory + L" \\ " + directory;
0 commit comments