public async Task BootstrapAsync( string rocketFolder, IEnumerable <string> packageIds, bool allowPrereleaseVersions = false, string repository = DefaultNugetRepository, ILogger logger = null) { logger = logger ?? new NuGetConsoleLogger(); logger.LogInformation("Bootstrap has started."); rocketFolder = Path.GetFullPath(rocketFolder); if (string.IsNullOrEmpty(repository)) { await InitializeRuntimeAsync(); return; } var packagesDirectory = Path.Combine(rocketFolder, "Packages"); if (!Directory.Exists(packagesDirectory)) { Directory.CreateDirectory(packagesDirectory); } var nugetInstaller = new NuGetPackageManager(logger, packagesDirectory, new[] { repository }); foreach (var packageId in packageIds) { PackageIdentity packageIdentity; if (!await nugetInstaller.PackageExistsAsync(packageId)) { logger.LogInformation("Searching for: " + packageId); var rocketPackage = await nugetInstaller.QueryPackageExactAsync(packageId, null, allowPrereleaseVersions); logger.LogInformation($"Downloading {rocketPackage.Identity.Id} v{rocketPackage.Identity.Version} via NuGet, this might take a while..."); var installResult = await nugetInstaller.InstallAsync(rocketPackage.Identity, allowPrereleaseVersions); if (installResult.Code != NuGetInstallCode.Success) { logger.LogInformation($"Downloading has failed for {rocketPackage.Identity.Id}: " + installResult.Code); return; } packageIdentity = installResult.Identity; logger.LogInformation($"Finished downloading \"{packageId}\""); } else { packageIdentity = await nugetInstaller.GetLatestPackageIdentityAsync(packageId); } logger.LogInformation($"Loading {packageId}."); await LoadPackageAsync(nugetInstaller, packageIdentity); } await InitializeRuntimeAsync(); }
public virtual async Task <NuGetInstallResult> InstallAsync(string packageName, string version = null, bool isPreRelease = false) { bool exists = await nugetPackageManager.PackageExistsAsync(packageName); return(await InstallOrUpdateAsync(packageName, version, isPreRelease, exists)); }