public async Task RefreshNuspecFile(PackageRetrieveOptions options) { if (!File.Exists(options.NuspecFilePath) || options.AlwaysLoadFromInternet) { await Task.Run(() => { try { IPackageRepository repo = PackageRepositoryFactory.Default.CreateRepository("https://packages.nuget.org/api/v2"); var package = repo.FindPackage(options.ProjectName); using (var pkgStream = package.GetStream()) { var pkgReader = new PackageReader(pkgStream); using (Stream nuspecStream = pkgReader.GetNuspec()) using (var fileStream = new FileStream(options.NuspecFilePath, FileMode.Create)) { nuspecStream.CopyTo(fileStream); } } } catch (Exception ex) { throw new Exception("Unable to download read from internet. " + ex.Message); } }); } }
public async Task <Manifest> GetPackageInformation(PackageRetrieveOptions options) { var nuspecProvider = new NuspecManager(); await nuspecProvider.RefreshNuspecFile(options); return(await nuspecProvider.GetNuspecManifest(options)); }
private IEnumerable <DependencyModel> GetDependecies(PackageRetrieveOptions options) { //todo:fix dependencyset issue. var nuspecDependencies = _manifest.Metadata .DependencySets.First() .Dependencies.Select(d => new DependencyModel { Id = d.Id, Version = d.Version }).ToList(); var projetDependencies = _nugetPackageManager.GetProjectDependencies(options) .Select(d => new DependencyModel { Id = d.Id, Version = d.Version }).ToList(); var finalDependencies = new List <DependencyModel>(); finalDependencies.AddRange(projetDependencies); foreach (var nuspecDependency in nuspecDependencies) { if (!finalDependencies.Contains(nuspecDependency, new DependencyModelIdComparator())) { finalDependencies.Add(nuspecDependency); } } return(finalDependencies); }
private async void OpenFileDialogOnFileOk(object sender, CancelEventArgs cancelEventArgs) { using (new WaitCursor()) { try { ShowStatus("Please wait.... downloading package information" , ContinuousProgressBarCommand.Start, ProgressResultType.Info); _filePath = _openFileDialog.FileName; PackageRetrieveOptions options = new PackageRetrieveOptions(_filePath, AlwaysLoadFromInternetCheckBox.IsChecked.GetValueOrDefault(false)); _manifest = await _nugetPackageManager.GetPackageInformation(options); TextBlockProjectTitle.Text = $"{_manifest.Metadata.Id} {_manifest.Metadata.Version}"; VersionTextBox.Text = GetNewVersion(); dataGrid.ItemsSource = GetDependecies(options); ShowStatus("Package information loaded", ContinuousProgressBarCommand.End, ProgressResultType.Info); } catch (Exception ex) { ShowStatus("Could not load package information." + ex.Message, ContinuousProgressBarCommand.End, ProgressResultType.Failure); } } }
public List <ManifestDependency> GetProjectDependencies(PackageRetrieveOptions options) { var configReader = new PackagesConfigReader(options); var dependenties = configReader.Read().Select(d => new ManifestDependency { Id = d.PackageIdentity.Id, Version = d.PackageIdentity.Version.ToString() }).ToList(); return(dependenties); }
public async Task <Manifest> GetNuspecManifest(PackageRetrieveOptions options) { return(await Task.Run(() => { try { using (FileStream fileStream = new FileStream(options.NuspecFilePath, FileMode.Open)) { return Manifest.ReadFrom(fileStream, true); } } catch (Exception ex) { throw new Exception($"Could not read nuspec file. {ex.Message}"); } })); }
public PackagesConfigReader(PackageRetrieveOptions options) { _options = options; }