1
0
mirror of https://github.com/Raymonf/whack.git synced 2024-11-24 08:30:09 +01:00

very minor error handling for bulk imports

This commit is contained in:
Raymonf 2022-11-05 14:21:12 -04:00
parent 5bda007b63
commit a59a0af2c0
No known key found for this signature in database
GPG Key ID: 438459BF619B037A
2 changed files with 48 additions and 11 deletions

View File

@ -0,0 +1,18 @@
namespace WhackTranslationTool.Exceptions;
public class UnhandledTomlError : Exception
{
public UnhandledTomlError()
{
}
public UnhandledTomlError(string message)
: base(message)
{
}
public UnhandledTomlError(string message, Exception inner)
: base(message, inner)
{
}
}

View File

@ -33,21 +33,40 @@ public class TableImporter
private void ReadStrings(string tomlPath) private void ReadStrings(string tomlPath)
{ {
using var reader = File.OpenText(tomlPath); TomlTable? table = null;
TomlTable table;
try var read = false;
while (!read)
{ {
table = TOML.Parse(reader); try
}
catch (TomlParseException ex)
{
Console.WriteLine($"*** ERROR: Failed to parse {tomlPath}: {ex.Message}");
foreach (var error in ex.SyntaxErrors)
{ {
Console.WriteLine($"* Syntax error at line {error.Line}: {error.Message}"); using var reader = File.OpenText(tomlPath);
table = TOML.Parse(reader);
read = true;
}
catch (TomlParseException ex)
{
Console.WriteLine($"*** ERROR: Failed to parse {tomlPath}: {ex.Message}");
foreach (var error in ex.SyntaxErrors)
{
Console.WriteLine($"* Syntax error at line {error.Line}: {error.Message}");
}
// prompt to retry so I don't have to keep restarting this thing
Console.Write("Try again (Y/n)? ");
var response = Console.ReadLine()!.Trim().ToLowerInvariant();
if (response is not ("" or "y" or "yes"))
{
break;
}
} }
throw;
} }
if (table == null)
{
throw new UnhandledTomlError("TOML error was not handled");
}
foreach (var (key, value) in table.RawTable) foreach (var (key, value) in table.RawTable)
{ {
if (string.IsNullOrEmpty(key)) if (string.IsNullOrEmpty(key))