public Manifest Build(string path, IPackageMetaData packageMetaData) { var files = this.artefactProcessor.RetrieveFiles(path); var manifest = new Manifest { Author = packageMetaData.Author, Id = Guid.NewGuid(), Name = packageMetaData.Name, Path = path, Tokens = packageMetaData.Tokens, Version = packageMetaData.Version, }; int progress = 0; var fileCount = files.Count(); var manifestFiles = new BlockingCollection<ManifestFile>(); Parallel.ForEach( files, file => { manifestFiles.Add(new ManifestFile { File = StripParentPath(path, file) }); this.progressNotifier.UpdateProgress(ProgressStage.BuildManifest, fileCount, progress); progress++; }); manifest.Files.AddRange(manifestFiles); return manifest; }
public Manifest Build(string path, IPackageMetaData packageMetaData) { var files = this.artefactProcessor.RetrieveFiles(path); var manifest = new Manifest { Author = packageMetaData.Author, Id = Guid.NewGuid(), Name = packageMetaData.Name, Path = path, Tokens = packageMetaData.Tokens, Version = packageMetaData.Version, }; int progress = 0; var fileCount = files.Count(); var manifestFiles = new BlockingCollection <ManifestFile>(); Parallel.ForEach( files, file => { manifestFiles.Add(new ManifestFile { File = StripParentPath(path, file) }); this.progressNotifier.UpdateProgress(ProgressStage.BuildManifest, fileCount, progress); progress++; }); manifest.Files.AddRange(manifestFiles); return(manifest); }
public Package Build(string path, IPackageMetaData packageMetaData) { return(new Package { Manifest = this.manifestBuilder.Build(path, packageMetaData) }); }
public async Task <bool> InitializeAsync() { using (await _mutex.LockAsync().ConfigureAwait(false)) { try { IEnumerable <CdnjsPackage> packages; if (IsCachedVersionOld(out packages)) { Directory.CreateDirectory(new FileInfo(_localPath).DirectoryName); using (WebClient client = new WebClient()) { await client.DownloadFileTaskAsync(_remoteApiUrl, _localPath).ConfigureAwait(false); } } if (packages == null) { using (StreamReader reader = new StreamReader(_localPath)) { string json = await reader.ReadToEndAsync(); var obj = (JObject)JsonConvert.DeserializeObject(json); packages = JsonConvert.DeserializeObject <IEnumerable <CdnjsPackage> >(obj["results"].ToString()); } } var comparer = new PackageNameComparer(); var distinct = new List <CdnjsPackage>(); // For some reason, the Cdnjs api returns duplicate entries foreach (var package in packages.OrderBy(p => p.Name, comparer)) { if (!distinct.Any(p => p.Name == package.Name)) { distinct.Add(package); } } _packages = distinct; Dictionary <string, Lazy <Task <IPackageInfo> > > infos = new Dictionary <string, Lazy <Task <IPackageInfo> > >(); foreach (CdnjsPackage package in distinct) { CdnjsPackage local = package; infos[local.Name] = new Lazy <Task <IPackageInfo> >(async() => { IPackageMetaData metadata = await local.GetPackageMetaData(Name); return(new PackageInfo(local.Name, metadata.Description) { Homepage = metadata.Homepage }); }); } _searchPackages = infos; return(true); } catch (Exception) { return(false); } } }
public Package Build(string path, IPackageMetaData packageMetaData) { return new Package { Manifest = this.manifestBuilder.Build(path, packageMetaData) }; }