/// <summary> /// Initializes a new instance of the <see cref="NuGetPackageManager"/> class /// </summary> /// <param name="packagesPersistentStorage">The persistent storage instance to be used for packages files</param> /// <param name="metadataPersistentStorage">The persistent storage instance to be used for metadata files</param> /// <param name="packageIndex">The package index instance to be used</param> public NuGetPackageManager(IPersistentStorage packagesPersistentStorage, IPersistentStorage metadataPersistentStorage, INuGetPackageIndex packageIndex) { if (packagesPersistentStorage == null) { throw new ArgumentNullException(nameof(packagesPersistentStorage)); } if (metadataPersistentStorage == null) { throw new ArgumentNullException(nameof(metadataPersistentStorage)); } if (packageIndex == null) { throw new ArgumentNullException(nameof(packageIndex)); } this.packagesPersistentStorage = packagesPersistentStorage; this.metadataPersistentStorage = metadataPersistentStorage; this.packageIndex = packageIndex; }
private void AddDependencies(IServiceCollection services) { services.AddSingleton <ServiceIndex>(CreateServiceIndex()); services.AddSingleton <INuGetPackageIndex>(serviceProvider => { string packageIndexType = Configuration.GetValue <string>("PackageIndexType"); var serviceIndex = serviceProvider.GetService <ServiceIndex>(); var telemetryClient = serviceProvider.GetService <TelemetryClient>(); INuGetPackageIndex instance = null; if ("InMemory".Equals(packageIndexType, StringComparison.OrdinalIgnoreCase)) { var logger = serviceProvider.GetService <ILogger <InMemoryNuGetPackageIndex> >(); instance = new InMemoryNuGetPackageIndex(serviceIndex, logger); } else if ("File".Equals(packageIndexType, StringComparison.OrdinalIgnoreCase)) { var logger = serviceProvider.GetService <ILogger <FileNuGetPackageIndex> >(); instance = new FileNuGetPackageIndex(serviceIndex, new FilePersistentStorage("./metadata"), logger, telemetryClient); } else { throw new Exception($"Unknown package index type: '{packageIndexType}'"); } instance.Initialize().Wait(); return(instance); }); services.AddSingleton <NuGetPackageManager>(serviceProvider => { var packageIndex = serviceProvider.GetService <INuGetPackageIndex>(); return(new NuGetPackageManager(new FilePersistentStorage("./packages"), new FilePersistentStorage("./metadata"), packageIndex)); }); }