internal static bool BuildAll(string[] modFolders, IBuildStatus status) {
var modList = new List<LoadingMod>();
foreach (var modFolder in modFolders) {
var mod = ReadProperties(modFolder, status);
if (mod == null)
return false;
modList.Add(mod);
}
foreach (var modFile in FindMods()) {
if (modList.Exists(m => m.Name == modFile.name))
continue;
modList.Add(new LoadingMod(modFile, BuildProperties.ReadModFile(modFile)));
}
List<BuildingMod> modsToBuild;
try {
var sortedModList = TopoSort(modList, true);
modsToBuild = sortedModList.OfType<BuildingMod>().ToList();
}
catch (ModSortingException e) {
ErrorLogger.LogDependencyError(e.Message);
return false;
}
int num = 0;
foreach (var mod in modsToBuild) {
status.SetProgress(num++, modsToBuild.Count);
if (!Build(mod, status))
return false;
}
return true;
}