2020-08-01 13:25:32 -07:00
using System.Collections.Generic ;
using System.IO ;
2020-12-08 16:37:08 -08:00
using SabreTools.DatFiles ;
2020-12-10 23:24:09 -08:00
using SabreTools.DatTools ;
2020-12-07 13:57:26 -08:00
using SabreTools.Help ;
2020-12-07 15:08:57 -08:00
using SabreTools.IO ;
2020-08-01 13:25:32 -07:00
namespace RombaSharp.Features
{
internal class EDiffdat : BaseFeature
{
public const string Value = "EDiffdat" ;
public EDiffdat ( )
{
Name = Value ;
Flags = new List < string > ( ) { "ediffdat" } ;
Description = "Creates a DAT file with those entries that are in -new DAT." ;
2020-12-07 13:57:26 -08:00
_featureType = ParameterType . Flag ;
2020-08-01 13:25:32 -07:00
LongDescription = @"Creates a DAT file with those entries that are in -new DAT files and not in -old DAT files. Ignores those entries in -old that are not in -new." ;
Features = new Dictionary < string , Feature > ( ) ;
AddFeature ( OutStringInput ) ;
AddFeature ( OldStringInput ) ;
AddFeature ( NewStringInput ) ;
}
public override void ProcessFeatures ( Dictionary < string , Feature > features )
{
base . ProcessFeatures ( features ) ;
// Get feature flags
string olddat = GetString ( features , OldStringValue ) ;
string outdat = GetString ( features , OutStringValue ) ;
string newdat = GetString ( features , NewStringValue ) ;
// Ensure the output directory
2020-12-10 22:16:53 -08:00
outdat . Ensure ( create : true ) ;
2020-08-01 13:25:32 -07:00
// Check that all required files exist
if ( ! File . Exists ( olddat ) )
{
2020-10-07 15:42:30 -07:00
logger . Error ( $"File '{olddat}' does not exist!" ) ;
2020-08-01 13:25:32 -07:00
return ;
}
if ( ! File . Exists ( newdat ) )
{
2020-10-07 15:42:30 -07:00
logger . Error ( $"File '{newdat}' does not exist!" ) ;
2020-08-01 13:25:32 -07:00
return ;
}
// Create the encapsulating datfile
2020-12-10 13:53:34 -08:00
DatFile datfile = Parser . CreateAndParse ( olddat ) ;
2020-08-01 13:25:32 -07:00
2020-08-27 21:40:08 -07:00
// Diff against the new datfile
2020-12-10 13:53:34 -08:00
DatFile intDat = Parser . CreateAndParse ( newdat ) ;
2020-12-13 23:09:24 -08:00
DatFileTool . DiffAgainst ( datfile , intDat , false ) ;
2020-12-10 14:03:07 -08:00
Writer . Write ( intDat , outdat ) ;
2020-08-01 13:25:32 -07:00
}
}
}