public GlobalSettingsTemplatePackageProvider(GlobalSettingsTemplatePackageProviderFactory factory, IEngineEnvironmentSettings settings) { Factory = factory ?? throw new ArgumentNullException(nameof(factory)); _environmentSettings = settings ?? throw new ArgumentNullException(nameof(settings)); _logger = settings.Host.LoggerFactory.CreateLogger <GlobalSettingsTemplatePackageProvider>(); _packagesFolder = Path.Combine(settings.Paths.GlobalSettingsDir, "packages"); if (!settings.Host.FileSystem.DirectoryExists(_packagesFolder)) { settings.Host.FileSystem.CreateDirectory(_packagesFolder); } foreach (var installerFactory in settings.Components.OfType <IInstallerFactory>()) { var installer = installerFactory.CreateInstaller(settings, _packagesFolder); //this provider cannot work with installers that do not implement ISerializableInstaller if (installer is ISerializableInstaller) { _installersByName[installerFactory.Name] = installer; _installersByGuid[installerFactory.Id] = installer; } } _globalSettingsFilePath = Path.Combine(_environmentSettings.Paths.GlobalSettingsDir, "packages.json"); _globalSettings = new GlobalSettings(_environmentSettings, _globalSettingsFilePath); // We can't just add "SettingsChanged+=TemplatePackagesChanged", because TemplatePackagesChanged is null at this time. _globalSettings.SettingsChanged += () => TemplatePackagesChanged?.Invoke(); }
public void UpdatePackages(IEnumerable <string>?nupkgs = null, IEnumerable <string>?folders = null) { _nupkgs = nupkgs ?? Array.Empty <string>(); _folders = folders ?? Array.Empty <string>(); TemplatePackagesChanged?.Invoke(); }