public async Task <IEnumerable <PackagesFileResult <IPackage> > > ParseDirectoryAsync(string directoryPath)
        {
            DirectoryInfo dirInfo = new DirectoryInfo(directoryPath);

            List <PackagesFileResult <IPackage> > result = new List <PackagesFileResult <IPackage> >();

            var files = dirInfo.EnumerateFiles("packages.config", SearchOption.AllDirectories);

            foreach (var file in files)
            {
                var item = await ParseFileAsync(file.FullName);

                result.Add(item);
            }

            files = dirInfo.EnumerateFiles("*.csproj", SearchOption.AllDirectories);
            foreach (var file in files)
            {
                var item = await ParseFileAsync(file.FullName);

                result.Add(item);
            }

            PackagesFileResult <IPackage> uiFrameworks = await ParseUiFrameworksAsync(dirInfo);

            result.Add(uiFrameworks);

            return(result);
        }
 public static PackagesFileResult <T> As <T>(this PackagesFileResult <IPackage> item) where T : IPackage
 {
     return(new PackagesFileResult <T>
     {
         FileName = item.FileName,
         Packages = item.Packages.Select(p => (T)p).ToList()
     });
 }
        public async Task <ActionResult> ParseFile(HttpPostedFileBase file)
        {
            var service = new GetPackagesService(_nuGetPackagesRepository, _uiLibraryPackageRepository);

            PackagesFileResult <IPackage> result = null;

            using (TemporaryFile tempFile = new TemporaryFile())
            {
                file.SaveAs(tempFile.FileName);

                result = await service.ParseFileAsync(tempFile.FileName, file.FileName);
            }

            var builder   = new ParseResultViewModelBuilder();
            var viewModel = builder.Build(new[] { result });

            return(View(_outputView, viewModel));
        }