|
7 | 7 | using SourceBrowser.Site.Repositories;
|
8 | 8 | using System;
|
9 | 9 | using System.Linq;
|
10 |
| - |
| 10 | + using Generator.Model; |
11 | 11 | public class UploadController : Controller
|
12 | 12 | {
|
13 | 13 | // GET: Upload
|
@@ -62,49 +62,45 @@ public ActionResult Submit(string githubUrl)
|
62 | 62 | var omnisharpPaths = Directory.GetFiles(repoRootPath, "omnisharp.json", SearchOption.AllDirectories);
|
63 | 63 | var projectJsonPaths= Directory.GetFiles(repoRootPath, "project.json", SearchOption.AllDirectories);
|
64 | 64 |
|
65 |
| - // TODO: Use parallel for. |
66 |
| - // TODO: Process all solutions. |
67 |
| - // For now, we're assuming the shallowest and shortest .sln file is the one we're interested in |
68 |
| - foreach (var solutionPath in solutionPaths.OrderBy(n => n.Length).Take(1)) |
69 |
| - { |
70 |
| - try |
71 |
| - { |
72 |
| - var workspaceModel = UploadRepository.ProcessSolution(solutionPath, repoRootPath); |
73 |
| - |
74 |
| - //One pass to lookup all declarations |
75 |
| - var typeTransformer = new TokenLookupTransformer(); |
76 |
| - typeTransformer.Visit(workspaceModel); |
77 |
| - var tokenLookup = typeTransformer.TokenLookup; |
78 |
| - |
79 |
| - //Another pass to generate HTMLs |
80 |
| - var htmlTransformer = new HtmlTransformer(tokenLookup, repoPath); |
81 |
| - htmlTransformer.Visit(workspaceModel); |
| 65 | + string solutionPath = solutionPaths.OrderBy(n => n.Length).FirstOrDefault(); |
| 66 | + string omnisharpPath = omnisharpPaths.OrderBy(n => n.Length).FirstOrDefault(); |
82 | 67 |
|
83 |
| - var searchTransformer = new SearchIndexTransformer(retriever.UserName, retriever.RepoName); |
84 |
| - searchTransformer.Visit(workspaceModel); |
| 68 | + WorkspaceModel workspaceModel = null; |
| 69 | + if(solutionPath != null) |
| 70 | + { |
| 71 | + workspaceModel = UploadRepository.ProcessSolution(solutionPath, repoRootPath); |
| 72 | + } |
85 | 73 |
|
86 |
| - // Generate HTML of the tree view |
87 |
| - var treeViewTransformer = new TreeViewTransformer(repoPath, retriever.UserName, retriever.RepoName); |
88 |
| - treeViewTransformer.Visit(workspaceModel); |
89 |
| - } |
90 |
| - catch (Exception ex) |
91 |
| - { |
92 |
| - // TODO: Log this |
93 |
| - ViewBag.Error = "There was an error processing solution " + Path.GetFileName(solutionPath); |
94 |
| - return View("Index"); |
95 |
| - } |
| 74 | + if(workspaceModel == null && omnisharpPath != null) |
| 75 | + { |
| 76 | + workspaceModel = UploadRepository.ProcessOmnisharp(omnisharpPath, repoRootPath); |
96 | 77 | }
|
97 | 78 |
|
98 |
| - try |
| 79 | + if(workspaceModel == null && projectJsonPaths.Count() > 0) |
99 | 80 | {
|
100 |
| - UploadRepository.SaveReadme(repoPath, retriever.ProvideParsedReadme()); |
| 81 | + workspaceModel = UploadRepository.ProcessProjectJson(projectJsonPaths, repoRootPath); |
101 | 82 | }
|
102 |
| - catch (Exception ex) |
| 83 | + |
| 84 | + if (workspaceModel != null) |
103 | 85 | {
|
104 |
| - // TODO: Log and swallow - readme is not essential. |
| 86 | + //One pass to lookup all declarations |
| 87 | + var typeTransformer = new TokenLookupTransformer(); |
| 88 | + typeTransformer.Visit(workspaceModel); |
| 89 | + var tokenLookup = typeTransformer.TokenLookup; |
| 90 | + |
| 91 | + //Another pass to generate HTMLs |
| 92 | + var htmlTransformer = new HtmlTransformer(tokenLookup, repoPath); |
| 93 | + htmlTransformer.Visit(workspaceModel); |
| 94 | + |
| 95 | + var searchTransformer = new SearchIndexTransformer(retriever.UserName, retriever.RepoName); |
| 96 | + searchTransformer.Visit(workspaceModel); |
| 97 | + |
| 98 | + // Generate HTML of the tree view |
| 99 | + var treeViewTransformer = new TreeViewTransformer(repoPath, retriever.UserName, retriever.RepoName); |
| 100 | + treeViewTransformer.Visit(workspaceModel); |
| 101 | + processingSuccessful = true; |
105 | 102 | }
|
106 | 103 |
|
107 |
| - processingSuccessful = true; |
108 | 104 | return Redirect("/Browse/" + retriever.UserName + "/" + retriever.RepoName);
|
109 | 105 | }
|
110 | 106 | finally
|
|
0 commit comments