mirror of
https://github.com/Raymonf/whack.git
synced 2024-11-12 04:10:46 +01:00
very minor error handling for bulk imports
This commit is contained in:
parent
5bda007b63
commit
a59a0af2c0
18
WTT/WTT/Exceptions/UnhandledTomlError.cs
Normal file
18
WTT/WTT/Exceptions/UnhandledTomlError.cs
Normal 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)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
@ -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))
|
||||||
|
Loading…
Reference in New Issue
Block a user