private void ScanAllPackageDirectories(IPreferences preferences) { foreach (var packagesDirectory in pathManager.PackagesDirectories) { if (DynamoModel.IsDisabledPath(packagesDirectory, preferences)) { Log(string.Format(Resources.PackagesDirectorySkipped, packagesDirectory)); continue; } else { ScanPackageDirectories(packagesDirectory, preferences); } } }
/// <summary> /// Helper function to load new custom nodes and packages. /// </summary> /// <param name="newPaths">New package paths to load custom nodes and packages from.</param> /// <param name="preferences">Can be a temporary local preferences object.</param> /// <param name="customNodeManager"></param> private void LoadCustomNodesAndPackagesHelper(IEnumerable <string> newPaths, IPreferences preferences, CustomNodeManager customNodeManager) { foreach (var path in preferences.CustomPackageFolders) { // Append the definitions subdirectory for custom nodes. var dir = path == DynamoModel.BuiltInPackagesToken ? PathManager.BuiltinPackagesDirectory : path; dir = TransformPath(dir, PathManager.DefinitionsDirectoryName); customNodeManager.AddUninitializedCustomNodesInPath(dir, false, false); } foreach (var path in newPaths) { if (DynamoModel.IsDisabledPath(path, preferences)) { Log(string.Format(Resources.PackagesDirectorySkipped, path)); continue; } else { ScanPackageDirectories(path, preferences); } } if (pathManager != null) { foreach (var pkg in LocalPackages) { if (Directory.Exists(pkg.BinaryDirectory)) { pathManager.AddResolutionPath(pkg.BinaryDirectory); } } } if (LocalPackages.Any()) { // Load only those recently addeed local packages (that are located in any of the new paths) var newPackages = LocalPackages.Where(x => newPaths.Any(y => x.RootDirectory.Contains(y))); LoadPackages(newPackages); } }