Skip to content

Commit

Permalink
Refactor project data and package data classes
Browse files Browse the repository at this point in the history
  • Loading branch information
ignatandrei committed Mar 5, 2024
1 parent b09bdea commit 260a6fc
Show file tree
Hide file tree
Showing 9 changed files with 184 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
public class Program
{
static async Task<int> Main(string[] args)
{
{

WriteLine("Version:"+ThisAssembly.Info.Version.ToString());
//args = new[]
Expand Down
42 changes: 39 additions & 3 deletions src/NetPackageAnalyzer/NetPackageAnalyzerWork/GenerateFiles.cs
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,25 @@ public async Task<bool> GenerateData(string folder)
vers[package.RequestedVersion].Add(projData);
}
}

//now we have all data
//add to the projects the package references
foreach (var item in this.projectsDict)
{
var pathProject = item.Value.RelativePath();
foreach (var package in packagedDict.Values)
{
foreach (var vers in package.VersionsPerProject)
{
foreach (var proj in vers.Value)
{
if (proj.RelativePath() == pathProject)
{
item.Value.Packages.Add(package);
}
}
}
}
}
return true;
}
public async Task GenerateNow(string folder)
Expand All @@ -144,8 +162,26 @@ public async Task GenerateNow(string folder)

file = Path.Combine(folderResults, "ProjectRelation.md");
ArgumentNullException.ThrowIfNull(projectsDict);
await File.WriteAllTextAsync(file, await generator.Generate_ProjectRelations(projectsDict));

await File.WriteAllTextAsync(file, await generator.Generate_ProjectsRelations(projectsDict));

var folderProjects= Path.Combine(folderResults, "Projects");
if (!Directory.Exists(folderProjects))
Directory.CreateDirectory(folderProjects);
foreach (var projData in projectsDict.AlphabeticOrderedProjects)
{
var folderProject = Path.Combine(folderProjects, projData.NameCSproj());
if (!Directory.Exists(folderProject))
Directory.CreateDirectory(folderProject);

file= Path.Combine(folderProject, "ProjectReferences.md");
await File.WriteAllTextAsync(file, await generator.Generate_ProjectRelations(projData));

file = Path.Combine(folderProject, "Packages.md");
await File.WriteAllTextAsync(file, await generator.Generate_ProjectPackages(projData));



}
//file = Path.Combine(folderResults, "DisplayAllVersionsWithProblems.md");
//ArgumentNullException.ThrowIfNull(projectsDict);
//await File.WriteAllTextAsync(file, await generator.Generate_DisplayAllVersionsWithProblemsMarkdown(model));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,14 @@
<IsRazorBlade>True</IsRazorBlade>
<Namespace>$([MSBuild]::ValueOrDefault('$(RootNamespace).%(RelativeDir)', '').Replace('\', '.').Replace('/', '.').Trim('.'))</Namespace>
</AdditionalFiles>
<AdditionalFiles Include="Templates\ProjectPackages.cshtml">
<IsRazorBlade>True</IsRazorBlade>
<Namespace>$([MSBuild]::ValueOrDefault('$(RootNamespace).%(RelativeDir)', '').Replace('\', '.').Replace('/', '.').Trim('.'))</Namespace>
</AdditionalFiles>
<AdditionalFiles Include="Templates\ProjectRelations.cshtml">
<IsRazorBlade>True</IsRazorBlade>
<Namespace>$([MSBuild]::ValueOrDefault('$(RootNamespace).%(RelativeDir)', '').Replace('\', '.').Replace('/', '.').Trim('.'))</Namespace>
</AdditionalFiles>
</ItemGroup>

<ItemGroup>
Expand All @@ -41,12 +49,18 @@
</ItemGroup>
<ItemGroup>
<None Remove="Templates\DisplayAllVersionsProblemsForMarkdown.cshtml" />
<None Remove="Templates\ProjectPackages.cshtml" />
<None Remove="Templates\ProjectRelations.cshtml" />
<None Remove="Templates\ProjectsRelations.cshtml" />
</ItemGroup>
<ItemGroup>
<RazorBlade Remove="Templates\DisplayAllVersionsProblemsForMarkdown.cshtml" />
</ItemGroup>
<ItemGroup>
<Watch Remove="Templates\DisplayAllVersionsProblemsForMarkdown.cshtml" />
<Watch Remove="Templates\ProjectPackages.cshtml" />
<Watch Remove="Templates\ProjectRelations.cshtml" />
<Watch Remove="Templates\ProjectsRelations.cshtml" />
</ItemGroup>


Expand Down
13 changes: 13 additions & 0 deletions src/NetPackageAnalyzer/NetPackageAnalyzerWork/PackageData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,19 @@ public TypePackageData typePackageData()
if (VersionsPerProject.Count < 2) return TypePackageData.OneVersion;
return (MajorVersionDiffer()? TypePackageData.MultipleVersionMajorDiff: TypePackageData.MultipleVersionNotMajorDiff);
}
public string[] VersionsForProject(ProjectData projectData)
{
List<string> versions = new ();
var relPath = projectData.RelativePath();
foreach (var item in VersionsPerProject)
{
if (item.Value.Any(it=>it.RelativePath()==relPath))
{
versions.Add(item.Key);
}
}
return versions.Order().ToArray();
}
public bool MajorVersionDiffer()
{
if(VersionsPerProject.Keys.Count < 2)return false;
Expand Down
20 changes: 20 additions & 0 deletions src/NetPackageAnalyzer/NetPackageAnalyzerWork/ProjectData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,27 @@

public record ProjectData(string PathProject, string folderSolution)
{
public string Version = ThisAssembly.Info.Version;
public List<ProjectData> ProjectsReferences { get; set; }=new();

public List<PackageData> Packages { get; set; }=new();
public ProjectData[] AlphabeticalProjectsReferences
{
get
{
return ProjectsReferences.OrderBy(p => p.NameCSproj()).ToArray();
}
}

public PackageData[] AlphabeticalProjectPackages
{
get
{
return Packages.OrderBy(p => p.packageVersionId).ToArray();
}
}


public string NameCSproj()
{
var indexDot=PathProject.LastIndexOf(".");
Expand Down
19 changes: 16 additions & 3 deletions src/NetPackageAnalyzer/NetPackageAnalyzerWork/TemplateGenerator.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
namespace NetPackageAnalyzerWork;


namespace NetPackageAnalyzerWork;
public class TemplateGenerator
{
public async Task<string> Generate_DisplayAllVersions(DisplayDataMoreThan1Version model)
Expand All @@ -24,10 +26,21 @@ public async Task<string> Generate_MermaidVisualizerMajorDiffer(DisplayDataMoreT
var rz = new MermaidVisualizerMajorDiffer(model);
return await rz.RenderAsync();
}
public async Task<string> Generate_ProjectRelations(ProjectsDict model)
public async Task<string> Generate_ProjectsRelations(ProjectsDict model)
{
var rz = new ProjectsRelations(model);
return await rz.RenderAsync();
}

internal async Task<string?> Generate_ProjectPackages(ProjectData model)
{
var rz = new ProjectRelations(model);
var rz= new ProjectPackages(model);
return await rz.RenderAsync();
}

internal async Task<string?> Generate_ProjectRelations(ProjectData projData)
{
var rz=new ProjectRelations(projData);
return await rz.RenderAsync();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
@inherits RazorBlade.PlainTextTemplate<ProjectData>;
@{
var nameCsproj = Model.NameCSproj();
var relativePath = Model.RelativePath();
var name = nameCsproj + "[" + relativePath + "]";
}

# Project packages

|Nr|ID|Version|
| ----------- | ----------- | ----------- |
@{
int i = 0;
}
@foreach (var item in Model.AlphabeticalProjectPackages)
{
i++;
var vers = item.VersionsForProject(Model);
var display= string.Join(", ", vers);

<text>| @i | @item.packageVersionId | @display |
</text>
}


<small>Generated by https://www.nuget.org/packages/netpackageanalyzerconsole , version @Model.Version</small>

Original file line number Diff line number Diff line change
@@ -1,41 +1,22 @@
@inherits RazorBlade.PlainTextTemplate<ProjectsDict>;
@inherits RazorBlade.PlainTextTemplate<ProjectData>;
@{
var nameCsproj = Model.NameCSproj();
var relativePath = Model.RelativePath();
var name = nameCsproj + "[" + relativePath + "]";
}

# Project relations

```mermaid
graph TB
%% start projects

@foreach (var proj in Model.AlphabeticOrderedProjects)
{
var nameCsproj = proj.NameCSproj();
var relativePath = proj.RelativePath();
var name = nameCsproj + "[" + relativePath + "]";
<text>
@name

</text>
}

%% end projects

@foreach (var proj in Model.AlphabeticOrderedProjects)
@foreach (var rel in Model.AlphabeticalProjectsReferences)
{
var nameCsproj = proj.NameCSproj();
var relativePath = proj.RelativePath();
var comment = $"%% start project reference {relativePath}";
<text>

@comment

@foreach(var rel in proj.ProjectsReferences)
{
<text>
@nameCsproj-->@rel.NameCSproj()

</text>

}
</text>
@nameCsproj-->@rel.NameCSproj()
</text>

}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
@inherits RazorBlade.PlainTextTemplate<ProjectsDict>;
# Projects relations

```mermaid
graph TB
%% start projects

@foreach (var proj in Model.AlphabeticOrderedProjects)
{
var nameCsproj = proj.NameCSproj();
var relativePath = proj.RelativePath();
var name = nameCsproj + "[" + relativePath + "]";
<text>
@name

</text>
}

%% end projects

@foreach (var proj in Model.AlphabeticOrderedProjects)
{
var nameCsproj = proj.NameCSproj();
var relativePath = proj.RelativePath();
var comment = $"%% start project reference {relativePath}";
<text>

@comment

@foreach (var rel in proj.AlphabeticalProjectsReferences)
{
<text>
@nameCsproj-->@rel.NameCSproj()

</text>

}
</text>

}

```
<small>Generated by https://www.nuget.org/packages/netpackageanalyzerconsole , version @Model.Version</small>

0 comments on commit 260a6fc

Please sign in to comment.