Skip to content

Commit 52fbb56

Browse files
committed
codegen: Code and console output cleanup
Remove OK-parts per quantity. Add checkmark in front of each line writing to files. Use Serilog parameters for coloring and fix warnings.
1 parent 6bd2897 commit 52fbb56

File tree

6 files changed

+79
-96
lines changed

6 files changed

+79
-96
lines changed

CodeGen/Generators/NanoFrameworkGenerator.cs

Lines changed: 32 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ internal static class NanoFrameworkGenerator
2525
{
2626
private const int AlignPad = 35;
2727

28-
static internal string MscorlibVersion = "";
29-
static internal string MscorlibNuGetVersion = "";
30-
static internal string MathVersion = "";
31-
static internal string MathNuGetVersion = "";
28+
internal static string MscorlibVersion = "";
29+
internal static string MscorlibNuGetVersion = "";
30+
internal static string MathVersion = "";
31+
internal static string MathNuGetVersion = "";
3232

3333
/// <summary>
3434
/// These projects require inclusion of Math NuGet package.
@@ -43,7 +43,7 @@ internal static class NanoFrameworkGenerator
4343
};
4444

4545
/// <summary>
46-
/// Create the root folder NanoFramewok
46+
/// Create the root folder NanoFramework
4747
/// Create all the quantities unit and quantities file
4848
/// Create all individual nanoFramework projects
4949
/// Create common package file
@@ -55,42 +55,35 @@ internal static class NanoFrameworkGenerator
5555
public static void Generate(string rootDir, Quantity[] quantities, bool updateNanoFrameworkDependencies)
5656
{
5757
// get latest version of .NET nanoFramework mscorlib
58-
NuGet.Common.ILogger logger = NullLogger.Instance;
59-
CancellationToken cancellationToken = CancellationToken.None;
58+
ILogger logger = NullLogger.Instance;
59+
var ct = CancellationToken.None;
6060

61-
SourceCacheContext cache = new SourceCacheContext();
61+
SourceCacheContext cache = new();
6262
SourceRepository repository = Repository.Factory.GetCoreV3("https://api.nuget.org/v3/index.json");
63-
FindPackageByIdResource resource = repository.GetResourceAsync<FindPackageByIdResource>().Result;
63+
FindPackageByIdResource resource = repository.GetResourceAsync<FindPackageByIdResource>(ct).Result;
6464

6565
var outputDir = Path.Combine(rootDir, "UnitsNet.NanoFramework", "GeneratedCode");
66-
var outputQuantitites = Path.Combine(outputDir, "Quantities");
66+
var outputQuantities = Path.Combine(outputDir, "Quantities");
6767
var outputUnits = Path.Combine(outputDir, "Units");
6868
var outputProperties = Path.Combine(outputDir, "Properties");
6969
// Ensure output directories exist
7070

71-
Directory.CreateDirectory(outputQuantitites);
71+
Directory.CreateDirectory(outputQuantities);
7272
Directory.CreateDirectory(outputUnits);
7373
Directory.CreateDirectory(outputProperties);
7474

75-
Log.Information($"Directory NanoFramework creation(OK)");
76-
7775
var lengthNuspecFile = Path.Combine(outputDir, "Length", "UnitsNet.NanoFramework.Length.nuspec");
7876
var projectVersion = ParseVersion(File.ReadAllText(lengthNuspecFile),
7977
new Regex(@"<version>(?<version>[\d\.]+)</version>", RegexOptions.IgnoreCase),
8078
"projectVersion");
8179

8280
SetDependencyVersions(resource, cache, logger, ct, updateNanoFrameworkDependencies, outputDir);
83-
GenerateProperties(Path.Combine(outputProperties, "AssemblyInfo.cs"), projectVersion);
84-
Log.Information("Property(OK)");
8581

8682
int numberQuantity = 0;
8783
foreach (var quantity in quantities)
8884
{
89-
Log.Information($"Creating .NET nanoFramework project for {quantity.Name}");
90-
9185
var projectPath = Path.Combine(outputDir, quantity.Name);
9286
Directory.CreateDirectory(projectPath);
93-
var sb = new StringBuilder($"{quantity.Name}:".PadRight(AlignPad));
9487

9588
GeneratePackageConfig(projectPath, quantity.Name);
9689

@@ -100,9 +93,9 @@ public static void Generate(string rootDir, Quantity[] quantities, bool updateNa
10093
MscorlibNuGetVersion,
10194
MathNuGetVersion);
10295

103-
GenerateUnitType(sb, quantity, Path.Combine(outputUnits, $"{quantity.Name}Unit.g.cs"));
104-
GenerateQuantity(sb, quantity, Path.Combine(outputQuantitites, $"{quantity.Name}.g.cs"));
105-
GenerateProject(sb, quantity, Path.Combine(projectPath, $"{quantity.Name}.nfproj"));
96+
GenerateUnitType(quantity, Path.Combine(outputUnits, $"{quantity.Name}Unit.g.cs"));
97+
GenerateQuantity(quantity, Path.Combine(outputQuantities, $"{quantity.Name}.g.cs"));
98+
GenerateProject(quantity, Path.Combine(projectPath, $"{quantity.Name}.nfproj"));
10699

107100
// Convert decimal based units to floats; decimals are not supported by nanoFramework
108101
if (quantity.BaseType == "decimal")
@@ -119,12 +112,18 @@ public static void Generate(string rootDir, Quantity[] quantities, bool updateNa
119112
new FileInfo($"{outputDir}\\Quantities\\{quantity.Name}.g.cs").EditFile(replacements);
120113
}
121114

115+
Log.Information("✅ {Quantity} (nanoFramework)", quantity.Name);
122116
numberQuantity++;
123117
}
118+
Log.Information("");
124119

120+
GenerateProperties(Path.Combine(outputProperties, "AssemblyInfo.cs"), projectVersion);
125121
GenerateSolution(quantities, outputDir);
126-
Log.Information("UnitsNet.nanoFramework.sln generated");
127-
Log.Information($"Count of generated projects: {numberQuantity}");
122+
123+
var unitCount = quantities.SelectMany(q => q.Units).Count();
124+
Log.Information("");
125+
Log.Information("Total of {UnitCount} units and {QuantityCount} quantities (nanoFramework)", unitCount, quantities.Length);
126+
Log.Information("");
128127
}
129128

130129
private static void SetDependencyVersions(FindPackageByIdResource resource, SourceCacheContext cache, ILogger logger,
@@ -229,16 +228,16 @@ private static void GenerateProperties(string filePath, string version)
229228
{
230229
var content = new PropertyGenerator(version).Generate();
231230
File.WriteAllText(filePath, content);
231+
Log.Information("✅ AssemblyInfo.cs (nanoFramework)");
232232
}
233233

234-
private static void GenerateUnitType(StringBuilder sb, Quantity quantity, string filePath)
234+
private static void GenerateUnitType(Quantity quantity, string filePath)
235235
{
236236
var content = new UnitTypeGenerator(quantity).Generate();
237237
File.WriteAllText(filePath, content);
238-
sb.Append("unit(OK) ");
239238
}
240239

241-
private static void GenerateQuantity(StringBuilder sb, Quantity quantity, string filePath)
240+
private static void GenerateQuantity(Quantity quantity, string filePath)
242241
{
243242
var content = new QuantityGenerator(quantity).Generate();
244243
// Replace any Math.PI by the real number 3.1415926535897931
@@ -248,44 +247,42 @@ private static void GenerateQuantity(StringBuilder sb, Quantity quantity, string
248247
// Replace Math.Pow(2.54e-2, 4) by 0.0000004162314256
249248
content = content.Replace("Math.Pow(2.54e-2, 4)", "0.0000004162314256");
250249
File.WriteAllText(filePath, content);
251-
sb.Append("quantity(OK) ");
252250
}
253251

254-
private static void GenerateProject(StringBuilder sb, Quantity quantity, string filePath)
252+
private static void GenerateProject(Quantity quantity, string filePath)
255253
{
256254
var content = new ProjectGenerator(quantity).Generate();
257255
File.WriteAllText(filePath, content);
258-
sb.Append("project(OK) ");
259256
}
260257

261258
private static void GenerateSolution(Quantity[] quantities, string outputDir)
262259
{
263260
var content = new SolutionGenerator(quantities).Generate();
264-
265261
var filePath = Path.Combine(outputDir, "UnitsNet.nanoFramework.sln");
266262

267263
File.WriteAllText(filePath, content);
264+
Log.Information("✅ UnitsNet.nanoFramework.sln (nanoFramework)");
268265
}
269266

270267
private static string GeneratePackageConfigFile(string quantityName)
271268
{
272-
MyTextWriter Writer = new MyTextWriter();
269+
MyTextWriter writer = new();
273270

274-
Writer.WL($@"
271+
writer.WL($@"
275272
<?xml version=""1.0"" encoding=""utf-8""?>
276273
<packages>
277274
<package id=""nanoFramework.CoreLibrary"" version=""{MscorlibNuGetVersion}"" targetFramework=""netnanoframework10"" />");
278275

279276

280277
if (NanoFrameworkGenerator.ProjectsRequiringMath.Contains(quantityName))
281278
{
282-
Writer.WL($@"
279+
writer.WL($@"
283280
<package id=""nanoFramework.System.Math"" version=""{MathNuGetVersion}"" targetFramework=""netnanoframework10"" />");
284281
}
285282

286-
Writer.WL($@"</packages>");
283+
writer.WL($@"</packages>");
287284

288-
return Writer.ToString();
285+
return writer.ToString();
289286
}
290287
}
291288
}

CodeGen/Generators/QuantityJsonFilesParser.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
using System.Collections.Generic;
66
using System.IO;
77
using System.Linq;
8-
using System.Text;
98
using CodeGen.Exceptions;
109
using CodeGen.Helpers;
1110
using CodeGen.JsonTypes;

CodeGen/Generators/UnitsNetGenerator.cs

Lines changed: 22 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
using System.IO;
55
using System.Linq;
6-
using System.Text;
76
using CodeGen.Generators.UnitsNetGen;
87
using CodeGen.JsonTypes;
98
using Serilog;
@@ -15,8 +14,6 @@ namespace CodeGen.Generators
1514
/// </summary>
1615
internal static class UnitsNetGenerator
1716
{
18-
private const int AlignPad = 35;
19-
2017
/// <summary>
2118
/// Generate source code for UnitsNet project for the given parsed quantities.
2219
/// Outputs files relative to the given root dir to these locations:
@@ -52,117 +49,106 @@ public static void Generate(string rootDir, Quantity[] quantities)
5249

5350
foreach (var quantity in quantities)
5451
{
55-
var sb = new StringBuilder($"{quantity.Name}:".PadRight(AlignPad));
56-
GenerateQuantity(sb, quantity, $"{outputDir}/Quantities/{quantity.Name}.g.cs");
57-
GenerateUnitType(sb, quantity, $"{outputDir}/Units/{quantity.Name}Unit.g.cs");
58-
GenerateNumberToExtensions(sb, quantity, $"{extensionsOutputDir}/NumberTo{quantity.Name}Extensions.g.cs");
59-
GenerateNumberToExtensionsTestClass(sb, quantity, $"{extensionsTestOutputDir}/NumberTo{quantity.Name}ExtensionsTest.g.cs");
52+
GenerateQuantity(quantity, $"{outputDir}/Quantities/{quantity.Name}.g.cs");
53+
GenerateUnitType(quantity, $"{outputDir}/Units/{quantity.Name}Unit.g.cs");
54+
GenerateNumberToExtensions(quantity, $"{extensionsOutputDir}/NumberTo{quantity.Name}Extensions.g.cs");
55+
GenerateNumberToExtensionsTestClass(quantity, $"{extensionsTestOutputDir}/NumberTo{quantity.Name}ExtensionsTest.g.cs");
6056

6157
// Example: CustomCode/Quantities/LengthTests inherits GeneratedCode/TestsBase/LengthTestsBase
6258
// This way when new units are added to the quantity JSON definition, we auto-generate the new
6359
// conversion function tests that needs to be manually implemented by the developer to fix the compile error
6460
// so it cannot be forgotten.
65-
GenerateQuantityTestBaseClass(sb, quantity, $"{testProjectDir}/GeneratedCode/TestsBase/{quantity.Name}TestsBase.g.cs");
66-
GenerateQuantityTestClassIfNotExists(sb, quantity, $"{testProjectDir}/CustomCode/{quantity.Name}Tests.cs");
61+
GenerateQuantityTestBaseClass(quantity, $"{testProjectDir}/GeneratedCode/TestsBase/{quantity.Name}TestsBase.g.cs");
62+
GenerateQuantityTestClassIfNotExists(quantity, $"{testProjectDir}/CustomCode/{quantity.Name}Tests.cs");
6763

68-
Log.Information(sb.ToString());
64+
Log.Information("✅ {Quantity}", quantity.Name);
6965
}
7066

71-
GenerateIQuantityTests(quantities, $"{testProjectDir}/GeneratedCode/IQuantityTests.g.cs");
72-
7367
Log.Information("");
68+
GenerateIQuantityTests(quantities, $"{testProjectDir}/GeneratedCode/IQuantityTests.g.cs");
7469
GenerateUnitAbbreviationsCache(quantities, $"{outputDir}/UnitAbbreviationsCache.g.cs");
7570
GenerateQuantityType(quantities, $"{outputDir}/QuantityType.g.cs");
7671
GenerateStaticQuantity(quantities, $"{outputDir}/Quantity.g.cs");
7772
GenerateUnitConverter(quantities, $"{outputDir}/UnitConverter.g.cs");
7873

7974
var unitCount = quantities.SelectMany(q => q.Units).Count();
8075
Log.Information("");
81-
Log.Information($"Total of {unitCount} units and {quantities.Length} quantities.");
76+
Log.Information("Total of {UnitCount} units and {QuantityCount} quantities", unitCount, quantities.Length);
8277
Log.Information("");
8378
}
8479

85-
private static void GenerateQuantityTestClassIfNotExists(StringBuilder sb, Quantity quantity, string filePath)
80+
private static void GenerateQuantityTestClassIfNotExists(Quantity quantity, string filePath)
8681
{
87-
if (File.Exists(filePath))
88-
{
89-
sb.Append("test stub(skip) ");
90-
return;
91-
}
82+
if (File.Exists(filePath)) return;
9283

9384
var content = new UnitTestStubGenerator(quantity).Generate();
9485
File.WriteAllText(filePath, content);
95-
sb.Append("test stub(OK) ");
86+
Log.Information("✅ {Quantity} initial test stub", quantity.Name);
9687
}
9788

98-
private static void GenerateQuantity(StringBuilder sb, Quantity quantity, string filePath)
89+
private static void GenerateQuantity(Quantity quantity, string filePath)
9990
{
10091
var content = new QuantityGenerator(quantity).Generate();
10192
File.WriteAllText(filePath, content);
102-
sb.Append("quantity(OK) ");
10393
}
10494

105-
private static void GenerateNumberToExtensions(StringBuilder sb, Quantity quantity, string filePath)
95+
private static void GenerateNumberToExtensions(Quantity quantity, string filePath)
10696
{
10797
var content = new NumberExtensionsGenerator(quantity).Generate();
10898
File.WriteAllText(filePath, content);
109-
sb.Append("number extensions(OK) ");
11099
}
111100

112-
private static void GenerateNumberToExtensionsTestClass(StringBuilder sb, Quantity quantity, string filePath)
101+
private static void GenerateNumberToExtensionsTestClass(Quantity quantity, string filePath)
113102
{
114103
var content = new NumberExtensionsTestClassGenerator(quantity).Generate();
115104
File.WriteAllText(filePath, content);
116-
sb.Append("number extensions tests(OK) ");
117105
}
118106

119-
private static void GenerateUnitType(StringBuilder sb, Quantity quantity, string filePath)
107+
private static void GenerateUnitType(Quantity quantity, string filePath)
120108
{
121109
var content = new UnitTypeGenerator(quantity).Generate();
122110
File.WriteAllText(filePath, content);
123-
sb.Append("unit(OK) ");
124111
}
125112

126-
private static void GenerateQuantityTestBaseClass(StringBuilder sb, Quantity quantity, string filePath)
113+
private static void GenerateQuantityTestBaseClass(Quantity quantity, string filePath)
127114
{
128115
var content = new UnitTestBaseClassGenerator(quantity).Generate();
129116
File.WriteAllText(filePath, content);
130-
sb.Append("test base(OK) ");
131117
}
132118

133119
private static void GenerateIQuantityTests(Quantity[] quantities, string filePath)
134120
{
135121
var content = new IQuantityTestClassGenerator(quantities).Generate();
136122
File.WriteAllText(filePath, content);
137-
Log.Information("IQuantityTests.g.cs: ".PadRight(AlignPad) + "(OK)");
123+
Log.Information("IQuantityTests.g.cs");
138124
}
139125

140126
private static void GenerateUnitAbbreviationsCache(Quantity[] quantities, string filePath)
141127
{
142128
var content = new UnitAbbreviationsCacheGenerator(quantities).Generate();
143129
File.WriteAllText(filePath, content);
144-
Log.Information("UnitAbbreviationsCache.g.cs: ".PadRight(AlignPad) + "(OK)");
130+
Log.Information("UnitAbbreviationsCache.g.cs");
145131
}
146132

147133
private static void GenerateQuantityType(Quantity[] quantities, string filePath)
148134
{
149135
var content = new QuantityTypeGenerator(quantities).Generate();
150136
File.WriteAllText(filePath, content);
151-
Log.Information("QuantityType.g.cs: ".PadRight(AlignPad) + "(OK)");
137+
Log.Information("QuantityType.g.cs");
152138
}
153139

154140
private static void GenerateStaticQuantity(Quantity[] quantities, string filePath)
155141
{
156142
var content = new StaticQuantityGenerator(quantities).Generate();
157143
File.WriteAllText(filePath, content);
158-
Log.Information("Quantity.g.cs: ".PadRight(AlignPad) + "(OK)");
144+
Log.Information("Quantity.g.cs");
159145
}
160146

161147
private static void GenerateUnitConverter(Quantity[] quantities, string filePath)
162148
{
163149
var content = new UnitConverterGenerator(quantities).Generate();
164150
File.WriteAllText(filePath, content);
165-
Log.Information("UnitConverter.g.cs: ".PadRight(AlignPad) + "(OK)");
151+
Log.Information("UnitConverter.g.cs");
166152
}
167153
}
168154
}

0 commit comments

Comments
 (0)