Files
SabreTools/SabreTools.DatFiles/Formats/ArchiveDotOrg.Writer.cs
2024-03-11 14:31:48 -04:00

52 lines
1.6 KiB
C#

using System;
using System.Collections.Generic;
using SabreTools.Core;
using SabreTools.DatItems;
namespace SabreTools.DatFiles.Formats
{
/// <summary>
/// Represents parsing and writing of a Archive.org file list
/// </summary>
internal partial class ArchiveDotOrg : DatFile
{
/// <inheritdoc/>
protected override ItemType[] GetSupportedTypes()
{
return
[
ItemType.Rom,
];
}
/// <inheritdoc/>
protected override List<string>? GetMissingRequiredFields(DatItem datItem) => null;
/// <inheritdoc/>
public override bool WriteToFile(string outfile, bool ignoreblanks = false, bool throwOnError = false)
{
try
{
logger.User($"Writing to '{outfile}'...");
// Serialize the input file
var metadata = ConvertMetadata(ignoreblanks);
var files = new Serialization.CrossModel.ArchiveDotOrg().Deserialize(metadata);
if (!new Serialization.Files.ArchiveDotOrg().Serialize(files, outfile))
{
logger.Warning($"File '{outfile}' could not be written! See the log for more details.");
return false;
}
}
catch (Exception ex) when (!throwOnError)
{
logger.Error(ex);
return false;
}
logger.User($"'{outfile}' written!{Environment.NewLine}");
return true;
}
}
}