File EnabledModuleList::findLocalModuleFolder (const String& moduleID, bool useExportersForOtherOSes) { for (Project::ExporterIterator exporter (project); exporter.next();) { if (useExportersForOtherOSes || exporter->mayCompileOnCurrentOS()) { const String path (exporter->getPathForModuleString (moduleID)); if (path.isNotEmpty()) { const File moduleFolder (project.resolveFilename (path)); if (moduleFolder.exists()) { if (ModuleDescription (moduleFolder).isValid()) return moduleFolder; File f = moduleFolder.getChildFile (moduleID); if (ModuleDescription (f).isValid()) return f; f = moduleFolder.getChildFile ("modules") .getChildFile (moduleID); if (ModuleDescription (f).isValid()) return f; } } } } return File(); }
static Array<File> getAllPossibleModulePathsFromExporters (Project& project) { StringArray paths; for (Project::ExporterIterator exporter (project); exporter.next();) { auto& modules = project.getModules(); auto n = modules.getNumModules(); for (int i = 0; i < n; ++i) { auto id = modules.getModuleID (i); if (modules.shouldUseGlobalPath (id)) continue; const auto path = exporter->getPathForModuleString (id); if (path.isNotEmpty()) paths.addIfNotAlreadyThere (path); } String oldPath (exporter->getLegacyModulePath()); if (oldPath.isNotEmpty()) paths.addIfNotAlreadyThere (oldPath); } Array<File> files; for (auto& path : paths) { auto f = project.resolveFilename (path); if (f.isDirectory()) { files.addIfNotAlreadyThere (f); if (f.getChildFile ("modules").isDirectory()) files.addIfNotAlreadyThere (f.getChildFile ("modules")); } } return files; }
static Array<File> getAllPossibleModulePaths (Project& project) { StringArray paths; for (Project::ExporterIterator exporter (project); exporter.next();) { if (exporter->mayCompileOnCurrentOS()) { for (int i = 0; i < project.getModules().getNumModules(); ++i) { const String path (exporter->getPathForModuleString (project.getModules().getModuleID (i))); if (path.isNotEmpty()) paths.addIfNotAlreadyThere (path); } String oldPath (exporter->getLegacyModulePath()); if (oldPath.isNotEmpty()) paths.addIfNotAlreadyThere (oldPath); } } Array<File> files; for (int i = 0; i < paths.size(); ++i) { const File f (project.resolveFilename (paths[i])); if (f.isDirectory()) { files.add (f); if (f.getChildFile ("modules").isDirectory()) files.addIfNotAlreadyThere (f.getChildFile ("modules")); } } return files; }
File EnabledModuleList::getModuleInfoFile (const String& moduleID) { for (Project::ExporterIterator exporter (project); exporter.next();) { if (exporter->mayCompileOnCurrentOS()) { const String path (exporter->getPathForModuleString (moduleID)); if (path.isNotEmpty()) { const File moduleFolder (project.resolveFilename (path)); if (moduleFolder.exists()) { File f (moduleFolder.getChildFile (ModuleDescription::getManifestFileName())); if (f.exists()) return f; f = moduleFolder.getChildFile (moduleID) .getChildFile (ModuleDescription::getManifestFileName()); if (f.exists()) return f; f = moduleFolder.getChildFile ("modules") .getChildFile (moduleID) .getChildFile (ModuleDescription::getManifestFileName()); if (f.exists()) return f; } } } } return File::nonexistent; }