Browse Source

Fix addAllModulesInFolder to scan only 2 subfolder levels

Other existing behavior remains:
* check whether the folder itself is a valid module
* always return Result::ok()
* may contain duplicate modules
tags/2021-05-28
stefan 9 years ago
parent
commit
8f1d37a72e
2 changed files with 26 additions and 6 deletions
  1. +23
    -6
      extras/Projucer/Source/Project/jucer_Module.cpp
  2. +3
    -0
      extras/Projucer/Source/Project/jucer_Module.h

+ 23
- 6
extras/Projucer/Source/Project/jucer_Module.cpp View File

@@ -168,22 +168,39 @@ StringArray ModuleList::getIDs() const
return results;
}
Result ModuleList::addAllModulesInFolder (const File& path)
Result ModuleList::tryToAddModuleFromFolder (const File& path)
{
ModuleDescription m (path);
if (m.isValid())
{
modules.add (new ModuleDescription (m));
return Result::ok();
}
else
return Result::fail (path.getFullPathName() + " is not a valid module");
}
Result ModuleList::addAllModulesInFolder (const File& path)
{
if (! tryToAddModuleFromFolder (path))
{
const int subfolders = 2;
return addAllModulesInSubfoldersRecursively (path, subfolders);
}
return Result::ok();
}
Result ModuleList::addAllModulesInSubfoldersRecursively (const File& path, int depth)
{
if (depth > 0)
{
for (DirectoryIterator iter (path, false, "*", File::findDirectories); iter.next();)
{
Result r = addAllModulesInFolder (iter.getFile().getLinkedTarget());
const File& childPath = iter.getFile().getLinkedTarget();
if (r.failed())
return r;
if (! tryToAddModuleFromFolder (childPath))
addAllModulesInSubfoldersRecursively (childPath, depth - 1);
}
}


+ 3
- 0
extras/Projucer/Source/Project/jucer_Module.h View File

@@ -74,7 +74,10 @@ struct ModuleList
StringArray getIDs() const;
void sort();
Result tryToAddModuleFromFolder (const File&);
Result addAllModulesInFolder (const File&);
Result addAllModulesInSubfoldersRecursively (const File&, int depth);
Result scanAllKnownFolders (Project&);
OwnedArray<ModuleDescription> modules;


Loading…
Cancel
Save