コード例 #1
0
        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();
        }
コード例 #2
0
 public void UpdatePackages(IEnumerable <string>?nupkgs = null, IEnumerable <string>?folders = null)
 {
     _nupkgs  = nupkgs ?? Array.Empty <string>();
     _folders = folders ?? Array.Empty <string>();
     TemplatePackagesChanged?.Invoke();
 }