using System; using System.Collections.Generic; using SabreTools.Core; using SabreTools.DatItems; namespace SabreTools.DatFiles.Formats { /// /// Represents parsing and writing of a Archive.org file list /// internal partial class ArchiveDotOrg : DatFile { /// protected override ItemType[] GetSupportedTypes() { return [ ItemType.Rom, ]; } /// protected override List? GetMissingRequiredFields(DatItem datItem) => null; /// 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; } } }