[SimpleSort] Output updated DAT (flag)

This commit is contained in:
Matt Nadareski
2016-08-29 20:27:19 -07:00
parent e9d18f95b1
commit 6eb231c1d9
2 changed files with 23 additions and 6 deletions

View File

@@ -276,6 +276,7 @@ namespace SabreTools.Helper
helptext.Add(" -gz={2} Set scanning level for GZip archives");
helptext.Add(" -rar={2} Set scanning level for RAR archives");
helptext.Add(" -zip={1} Set scanning level for ZIP archives");
helptext.Add(" -ud, --update-dat Output updated DAT");
helptext.Add("");
helptext.Add("Archive scanning levels:");
helptext.Add(" 0 Hash archive and contents");

View File

@@ -18,6 +18,7 @@ namespace SabreTools
private bool _verify;
private bool _tgz;
private bool _romba;
private bool _updateDat;
private ArchiveScanLevel _7z;
private ArchiveScanLevel _gz;
private ArchiveScanLevel _rar;
@@ -45,10 +46,11 @@ namespace SabreTools
/// <param name="gz">Integer representing the archive handling level for GZip</param>
/// <param name="rar">Integer representing the archive handling level for RAR</param>
/// <param name="zip">Integer representing the archive handling level for Zip</param>
/// <param name="updateDat">True if the updated DAT should be output, false otherwise</param>
/// <param name="logger">Logger object for file and console output</param>
public SimpleSort(Dat datdata, List<string> inputs, string outdir, string tempdir,
bool quickScan, bool toFolder, bool verify, bool tgz, bool romba, int sevenzip,
int gz, int rar, int zip, Logger logger)
int gz, int rar, int zip, bool updateDat, Logger logger)
{
_datdata = datdata;
_inputs = inputs;
@@ -63,6 +65,7 @@ namespace SabreTools
_gz = (ArchiveScanLevel)(gz < 0 || gz > 2 ? 0 : gz);
_rar = (ArchiveScanLevel)(rar < 0 || rar > 2 ? 0 : rar);
_zip = (ArchiveScanLevel)(zip < 0 || zip > 2 ? 0 : zip);
_updateDat = updateDat;
_logger = logger;
_cursorTop = Console.CursorTop;
@@ -114,6 +117,7 @@ namespace SabreTools
simpleSort = true,
tgz = false,
toFolder = false,
updateDat = false,
verify = false;
int sevenzip = 0,
gz = 2,
@@ -150,6 +154,10 @@ namespace SabreTools
case "--tgz":
tgz = true;
break;
case "-ud":
case "--updated-dat":
updateDat = true;
break;
case "-v":
case "--verify":
verify = true;
@@ -246,7 +254,7 @@ namespace SabreTools
{
if (datfiles.Count > 0)
{
InitSimpleSort(datfiles, inputs, outdir, tempdir, quickScan, toFolder, verify, tgz, romba, sevenzip, gz, rar, zip, logger);
InitSimpleSort(datfiles, inputs, outdir, tempdir, quickScan, toFolder, verify, tgz, romba, sevenzip, gz, rar, zip, updateDat, logger);
}
else
{
@@ -283,9 +291,10 @@ namespace SabreTools
/// <param name="gz">Integer representing the archive handling level for GZip</param>
/// <param name="rar">Integer representing the archive handling level for RAR</param>
/// <param name="zip">Integer representing the archive handling level for Zip</param>
/// <param name="updateDat">True if the updated DAT should be output, false otherwise</param>
/// <param name="logger">Logger object for file and console output</param>
private static void InitSimpleSort(List<string> datfiles, List<string> inputs, string outdir, string tempdir,
bool quickScan, bool toFolder, bool verify, bool tgz, bool romba, int sevenzip, int gz, int rar, int zip, Logger logger)
private static void InitSimpleSort(List<string> datfiles, List<string> inputs, string outdir, string tempdir, bool quickScan,
bool toFolder, bool verify, bool tgz, bool romba, int sevenzip, int gz, int rar, int zip, bool updateDat, Logger logger)
{
// Add all of the input DATs into one huge internal DAT
Dat datdata = new Dat();
@@ -294,7 +303,7 @@ namespace SabreTools
datdata = DatTools.Parse(datfile, 99, 99, datdata, logger);
}
SimpleSort ss = new SimpleSort(datdata, inputs, outdir, tempdir, quickScan, toFolder, verify, tgz, romba, sevenzip, gz, rar, zip, logger);
SimpleSort ss = new SimpleSort(datdata, inputs, outdir, tempdir, quickScan, toFolder, verify, tgz, romba, sevenzip, gz, rar, zip, updateDat, logger);
ss.StartProcessing();
}
@@ -462,7 +471,14 @@ namespace SabreTools
_logger.User("Stats of the matched ROMs:");
Stats.OutputStats(_matched, _logger, true);
// Diff the matched with the input DAT(s) and output if flag is set
// Now output the fixdat based on the original input if asked
if (_updateDat)
{
_datdata.FileName = "fixDat_" + _datdata.FileName;
_datdata.Name = "fixDat_" + _datdata.Name;
_datdata.Description = "fixDat_" + _datdata.Description;
Output.WriteDatfile(_datdata, "", _logger);
}
return success;
}