Skip to content

Commit

Permalink
solved refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
ignatandrei committed Mar 10, 2024
1 parent fea0033 commit d859746
Show file tree
Hide file tree
Showing 24 changed files with 195 additions and 218 deletions.
8 changes: 1 addition & 7 deletions src/NetPackageAnalyzer/NetPackageAnalyzer.sln
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AnalyzeMerge", "AnalyzeMerg
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NetPackageAnalyzerTests", "NetPackageAnalyzerTests\NetPackageAnalyzerTests.csproj", "{AC767AF4-F9E8-48D5-AF2D-5D88E23A1299}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetPackageAnalyzerDocusaurus", "NetPackageAnalyzerDocusaurus\NetPackageAnalyzerDocusaurus.csproj", "{1D3A35CB-10A8-4D83-9FE6-E6D47E0DE443}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetPackageAnalyzerObjects", "NetPackageAnalyzerObjects\NetPackageAnalyzerObjects.csproj", "{579A9B8E-FD8D-4E0E-9BF8-C3AF5BE2B682}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NetPackageAnalyzerObjects", "NetPackageAnalyzerObjects\NetPackageAnalyzerObjects.csproj", "{579A9B8E-FD8D-4E0E-9BF8-C3AF5BE2B682}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Expand All @@ -37,10 +35,6 @@ Global
{AC767AF4-F9E8-48D5-AF2D-5D88E23A1299}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AC767AF4-F9E8-48D5-AF2D-5D88E23A1299}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AC767AF4-F9E8-48D5-AF2D-5D88E23A1299}.Release|Any CPU.Build.0 = Release|Any CPU
{1D3A35CB-10A8-4D83-9FE6-E6D47E0DE443}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1D3A35CB-10A8-4D83-9FE6-E6D47E0DE443}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1D3A35CB-10A8-4D83-9FE6-E6D47E0DE443}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1D3A35CB-10A8-4D83-9FE6-E6D47E0DE443}.Release|Any CPU.Build.0 = Release|Any CPU
{579A9B8E-FD8D-4E0E-9BF8-C3AF5BE2B682}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{579A9B8E-FD8D-4E0E-9BF8-C3AF5BE2B682}.Debug|Any CPU.Build.0 = Debug|Any CPU
{579A9B8E-FD8D-4E0E-9BF8-C3AF5BE2B682}.Release|Any CPU.ActiveCfg = Release|Any CPU
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ static async Task<int> Main(string[] args)
{

WriteLine($"analyzing {folder}");
var g = new GenerateFiles(new FileSystem());
var g = new GenerateFilesDocusaurus(new FileSystem());
if (!await g.GenerateData(folder))
{
Console.WriteLine("not capable to generate data");
Expand Down
6 changes: 0 additions & 6 deletions src/NetPackageAnalyzer/NetPackageAnalyzerConsole/globals.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,7 @@
global using System.Diagnostics;
global using System.Text.Json;
//global using NS_;
global using OutDated = NS_GeneratedJson_outdatedV1_gen_json;
global using Deprecated = NS_GeneratedJson_deprecatedV1_gen_json;
global using All = NS_GeneratedJson_includeV1_gen_json;
global using static System.Console;
global using NetPackageAnalyzerConsole.generatedPartial;
global using NS_GeneratedJson_deprecatedV1_gen_json;
global using NetPackageAnalyzerWork;
global using System.CommandLine;
global using AnalyzeMerge;
global using System.IO.Abstractions;
Original file line number Diff line number Diff line change
@@ -1,16 +1,27 @@
namespace NetPackageAnalyzerConsole;

public class GenerateFiles
using NetPackageAnalyzerConsole;
using NetPackageAnalyzerWork;
using System;
using System.Collections.Generic;
using System.IO.Abstractions;
using System.Linq;
using System.Numerics;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;

namespace NetPackageAnalyzerObjects;
public abstract class GenerateFiles
{
public GenerateFiles(IFileSystem system)
{
this.system = system;
}
string NameSolution ="";
Dictionary<string, PackageData> packagedDict=new();
ProjectsDict? projectsDict;
private readonly IFileSystem system;
protected string NameSolution = "";
protected Dictionary<string, PackageData> packagedDict = new();
protected ProjectsDict? projectsDict;
protected readonly IFileSystem system;

public abstract Task GenerateNow(string folder, string where);
public async Task<bool> GenerateData(string folder)
{
var sln = system.Directory.GetFiles(folder, "*.sln");
Expand All @@ -19,13 +30,13 @@ public async Task<bool> GenerateData(string folder)
WriteLine($"Must be 1 sln in the {folder}");
return false;
}
NameSolution =system.Path.GetFileNameWithoutExtension(sln[0]);
NameSolution = system.Path.GetFileNameWithoutExtension(sln[0]);
GlobalsForGenerating.NameSolution = NameSolution;
await Task.Delay(100);
WriteLine($"Start analyzing {folder}");
var p = new ProcessOutput();
var build = p.Build(folder);
if(!build)
if (!build)
{
WriteLine($"cannot build solution from {folder}");
return false;
Expand All @@ -37,7 +48,7 @@ public async Task<bool> GenerateData(string folder)

var outdatedPackages = JsonSerializer.Deserialize<OutDated.outdatedV1_gen_json>(text);


text = p.OutputDotnetPackage(folder, PackageOptions.Deprecated);

var deprecatedPackages = JsonSerializer.Deserialize<Deprecated.deprecatedV1_gen_json>(text);
Expand Down Expand Up @@ -69,14 +80,14 @@ public async Task<bool> GenerateData(string folder)
WriteLine($"No projects in folder {folder}");
return false;
}
projectsDict =new ProjectsDict(
projectsDict = new ProjectsDict(
arrDataProjectsPath
.Distinct()
.ToDictionary(it => it, it => new ProjectData(it, folder))
);
);

WriteLine($"Number projects : {projectsDict.Count}");
projectsDict.FindReferences();
projectsDict.FindReferences();
projectsDict.FindUpStreamReferences();
//adding transitive packages
if (allPackages?.Frameworks()?.Length > 0)
Expand Down Expand Up @@ -109,16 +120,16 @@ public async Task<bool> GenerateData(string folder)
var vers = packagedDict[package.PackageId].VersionsPerProject;
if (!vers.ContainsKey(package.RequestedVersion))
vers.Add(package.RequestedVersion, new());
var relPath= projData.RelativePath();
if (!vers[package.RequestedVersion].Any(item=>item.RelativePath()== relPath))
var relPath = projData.RelativePath();
if (!vers[package.RequestedVersion].Any(item => item.RelativePath() == relPath))
{
vers[package.RequestedVersion].Add(projData);

}
}
}

var problems=
var problems =
outdatedPackages!.PerProjectPathWithVersion()
.Union(deprecatedPackages!.PerProjectPathWithVersion())
.ToArray();
Expand Down Expand Up @@ -147,109 +158,12 @@ public async Task<bool> GenerateData(string folder)
{
if (proj.RelativePath() == pathProject)
{
item.Value.Packages.Add(package);
item.Value.Packages.Add(package);
}
}
}
}
}
return true;
}
public async Task GenerateNow(string folder, string where)
{

var folderResults = string.IsNullOrWhiteSpace(where) ? Path.Combine(folder, "Analysis") : where;
folderResults = Path.Combine(folderResults, NameSolution);
WriteLine($"generate in {folderResults}");
if (!Directory.Exists(folderResults))
Directory.CreateDirectory(folderResults);
DisplayDataMoreThan1Version model = new(packagedDict, folder);

TemplateGenerator generator = new();

var file = Path.Combine(folderResults, "DisplayAllVersions.html");
await File.WriteAllTextAsync(file, await generator.Generate_DisplayAllVersions(model));

file = Path.Combine(folderResults, "DisplayAllVersions.md");
await File.WriteAllTextAsync(file, await generator.Generate_DisplayAllVersionsMarkdown(model));

file = Path.Combine(folderResults, $"MermaidVisualizerMajorDiffer.md");
await File.WriteAllTextAsync(file, await generator.Generate_MermaidVisualizerMajorDiffer(model));

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

var folderProjects = Path.Combine(folderResults, "Projects");
if (!Directory.Exists(folderProjects))
Directory.CreateDirectory(folderProjects);

var projects = $$"""
{
"label": "Projects",
"position": 1,
"link": {
"type": "generated-index"
}
}
""";

await File.WriteAllTextAsync(Path.Combine(folderProjects, "_category_.json"), projects);

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

var project = $$"""
{
"label": "{{projData.NameCSproj()}}",
"position": 1,
"link": {
"type": "generated-index"
}
}
""";

await File.WriteAllTextAsync(Path.Combine(folderProject, "_category_.json"), project);

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, "_category_.json");
string categoryGenerated = $$"""
{
"label": "{{NameSolution}}",
"position": 1,
"link": {
"type": "generated-index"
}
}
""";
await File.WriteAllTextAsync(file, categoryGenerated);


file = Path.Combine(folderResults, "BuildingBlocks.md");
await File.WriteAllTextAsync(file, await generator.Generate_BuildingBlocks(projectsDict));

file = Path.Combine(folderResults, "TestProjects.md");
await File.WriteAllTextAsync(file, await generator.Generate_TestProjects(projectsDict));

file = Path.Combine(folderResults, "RootProjects.md");
await File.WriteAllTextAsync(file, await generator.Generate_RootProjects(projectsDict));

//file = Path.Combine(folderResults, "DisplayAllVersionsWithProblems.md");
//ArgumentNullException.ThrowIfNull(projectsDict);
//await File.WriteAllTextAsync(file, await generator.Generate_DisplayAllVersionsWithProblemsMarkdown(model));


}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,26 @@
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>


<ItemGroup>
<AdditionalFiles Include="generatedJson\deprecatedV1.gen.json" />
<AdditionalFiles Include="generatedJson\includeV1.gen.json" />
<AdditionalFiles Include="generatedJson\outdatedV1.gen.json" />
<AdditionalFiles Include="mixin\Packages.mixin" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="ThisAssembly.AssemblyInfo" Version="1.4.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
<PackageReference Include="TestableIO.System.IO.Abstractions.Wrappers" Version="20.0.15" />
<PackageReference Include="Morris.Moxy" Version="1.5.0" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
<PackageReference Include="rscgutils" Version="2023.827.1021" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />

</ItemGroup>
<PropertyGroup>
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)\GX</CompilerGeneratedFilesOutputPath>
</PropertyGroup>
</Project>
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
namespace NetPackageAnalyzerConsole.generatedPartial;
namespace NetPackageAnalyzerObjects;

public interface IOperations
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
namespace NS_GeneratedJson_deprecatedV1_gen_json;

[Packages(false)]
public partial class deprecatedV1_gen_json
{
Expand Down
16 changes: 16 additions & 0 deletions src/NetPackageAnalyzer/NetPackageAnalyzerObjects/globals.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
global using static System.Console;
global using NetPackageAnalyzerObjects;
global using OutDated = NS_GeneratedJson_outdatedV1_gen_json;
global using Deprecated = NS_GeneratedJson_deprecatedV1_gen_json;
global using All = NS_GeneratedJson_includeV1_gen_json;

public static class GlobalsForGenerating
{
public static string prefixSite = "pathname:///docs/Analysis/";//for markdown
public static string NameSolution = "";

public static string globalPrefix()
{
return prefixSite + NameSolution;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public async Task TestDoesNotWorkWithoutSln()
{
{ @"c:\myfile.txt", new MockFileData("Testing is meh.") },
});
var g = new GenerateFiles(fileSystem);
var g = new GenerateFilesDocusaurus(fileSystem);
var res =await g.GenerateData(@"C:\");
Assert.IsFalse(res);
}
Expand Down
Loading

0 comments on commit d859746

Please sign in to comment.