tracks/csharp/generators/Program.cs in trackler-2.2.1.12 vs tracks/csharp/generators/Program.cs in trackler-2.2.1.13
- old
+ new
@@ -1,33 +1,59 @@
-using CommandLine;
+using System;
+using CommandLine;
+using Generators.Input;
using Serilog;
namespace Generators
{
public static class Program
{
- public static void Main(string[] args)
+ public static int Main(string[] args)
{
SetupLogger();
- Parser.Default.ParseArguments<Options>(args)
- .WithParsed(Generate);
+ try
+ {
+ Parser.Default.ParseArguments<Options>(args)
+ .WithParsed(RegenerateTestClasses);
+ return 0;
+ }
+ catch (Exception exception)
+ {
+ Log.Error(exception, "Exception occured: {Message}", exception.Message);
+ return 1;
+ }
}
private static void SetupLogger()
{
Log.Logger = new LoggerConfiguration()
.WriteTo.LiterateConsole()
.CreateLogger();
}
- private static void Generate(Options options)
+ private static void RegenerateTestClasses(Options options)
{
- Log.Information("Generating tests...");
+ Log.Information("Re-generating test classes...");
+
+ var canonicalDataParser = CreateCanonicalDataParser(options);
foreach (var exercise in new ExerciseCollection(options.Exercises))
- exercise.Generate();
+ {
+ var canonicalData = canonicalDataParser.Parse(exercise);
+ exercise.Regenerate(canonicalData);
+ }
- Log.Information("Generated tests.");
+ Log.Information("Re-generated test classes.");
+ }
+
+ private static CanonicalDataParser CreateCanonicalDataParser(Options options)
+ {
+ var canonicalDataOptions = new CanonicalDataOptions
+ {
+ CanonicalDataDirectory = options.CanonicalDataDirectory,
+ CacheCanonicalData = options.CacheCanonicalData
+ };
+ return new CanonicalDataParser(canonicalDataOptions);
}
}
}
\ No newline at end of file