[SimpleSort] Allow for granular header checking in SimpleSort

This commit is contained in:
Matt Nadareski
2016-10-17 14:28:21 -07:00
parent 7eada54218
commit 73ea717f6b
5 changed files with 30 additions and 14 deletions

View File

@@ -178,7 +178,7 @@ namespace SabreTools
// Create the sorting object to use and rebuild the needed files // Create the sorting object to use and rebuild the needed files
ArchiveScanLevel asl = ArchiveTools.GetArchiveScanLevelFromNumbers(0, 0, 0, 0); ArchiveScanLevel asl = ArchiveTools.GetArchiveScanLevelFromNumbers(0, 0, 0, 0);
SimpleSort ss = new SimpleSort(need, onlyDirs, _depots.Keys.ToList()[0], _tmpdir, false, false, false, false, false, true, true, asl, false, _logger); SimpleSort ss = new SimpleSort(need, onlyDirs, _depots.Keys.ToList()[0], _tmpdir, false, false, false, false, false, true, true, asl, false, null, _logger);
ss.StartProcessing(); ss.StartProcessing();
} }
@@ -217,7 +217,7 @@ namespace SabreTools
List<string> onlineDepots = _depots.Where(d => d.Value.Item2).Select(d => d.Key).ToList(); List<string> onlineDepots = _depots.Where(d => d.Value.Item2).Select(d => d.Key).ToList();
// Now scan all of those depots and rebuild // Now scan all of those depots and rebuild
SimpleSort ss = new SimpleSort(datFile, onlineDepots, outputFolder, _tmpdir, false, false, false, false, false, copy, copy, asl, false, _logger); SimpleSort ss = new SimpleSort(datFile, onlineDepots, outputFolder, _tmpdir, false, false, false, false, false, copy, copy, asl, false, null, _logger);
ss.StartProcessing(); ss.StartProcessing();
} }
} }

View File

@@ -293,6 +293,7 @@ namespace SabreTools.Helper
helptext.Add(" -tgz Enable TorrentGZ output"); helptext.Add(" -tgz Enable TorrentGZ output");
helptext.Add(" -r, --romba Enable Romba depot dir output"); helptext.Add(" -r, --romba Enable Romba depot dir output");
helptext.Add(" -do, --directory Output files as uncompressed"); helptext.Add(" -do, --directory Output files as uncompressed");
helptext.Add(" -h=, --header= Set a header skipper to use, blank means all");
helptext.Add(" -7z={0} Set scanning level for 7z archives"); helptext.Add(" -7z={0} Set scanning level for 7z archives");
helptext.Add(" -gz={2} Set scanning level for GZip archives"); helptext.Add(" -gz={2} Set scanning level for GZip archives");
helptext.Add(" -rar={2} Set scanning level for RAR archives"); helptext.Add(" -rar={2} Set scanning level for RAR archives");

View File

@@ -22,6 +22,7 @@ namespace SabreTools.Helper
private bool _romba; private bool _romba;
private bool _updateDat; private bool _updateDat;
private ArchiveScanLevel _archiveScanLevel; private ArchiveScanLevel _archiveScanLevel;
private string _headerToCheckAgainst;
private Logger _logger; private Logger _logger;
private int _maxDegreeOfParallelism = 4; // Hardcoded for now, should be an input later private int _maxDegreeOfParallelism = 4; // Hardcoded for now, should be an input later
@@ -46,10 +47,11 @@ namespace SabreTools.Helper
/// <param name="romba">True if files should be output in Romba depot folders, false otherwise</param> /// <param name="romba">True if files should be output in Romba depot folders, false otherwise</param>
/// <param name="archiveScanLevel">ArchiveScanLevel representing the archive handling levels</param> /// <param name="archiveScanLevel">ArchiveScanLevel representing the archive handling levels</param>
/// <param name="updateDat">True if the updated DAT should be output, false otherwise</param> /// <param name="updateDat">True if the updated DAT should be output, false otherwise</param>
/// <param name="headerToCheckAgainst">Populated string representing the name of the skipper to use, a blank string to use the first available checker, null otherwise</param>
/// <param name="logger">Logger object for file and console output</param> /// <param name="logger">Logger object for file and console output</param>
public SimpleSort(DatFile datdata, List<string> inputs, string outDir, string tempDir, public SimpleSort(DatFile datdata, List<string> inputs, string outDir, string tempDir,
bool quickScan, bool date, bool toFolder, bool verify, bool delete, bool tgz, bool romba, bool quickScan, bool date, bool toFolder, bool verify, bool delete, bool tgz, bool romba,
ArchiveScanLevel archiveScanLevel, bool updateDat, Logger logger) ArchiveScanLevel archiveScanLevel, bool updateDat, string headerToCheckAgainst, Logger logger)
{ {
_datdata = datdata; _datdata = datdata;
_inputs = inputs; _inputs = inputs;
@@ -64,6 +66,7 @@ namespace SabreTools.Helper
_romba = romba; _romba = romba;
_archiveScanLevel = archiveScanLevel; _archiveScanLevel = archiveScanLevel;
_updateDat = updateDat; _updateDat = updateDat;
_headerToCheckAgainst = headerToCheckAgainst;
_logger = logger; _logger = logger;
_cursorTop = Console.CursorTop; _cursorTop = Console.CursorTop;
@@ -133,7 +136,7 @@ namespace SabreTools.Helper
{ {
_datdata.PopulateDatFromDir(input, false /* noMD5 */, false /* noSHA1 */, true /* bare */, false /* archivesAsFiles */, _datdata.PopulateDatFromDir(input, false /* noMD5 */, false /* noSHA1 */, true /* bare */, false /* archivesAsFiles */,
true /* enableGzip */, false /* addBlanks */, false /* addDate */, "" /* tempDir */, false /* copyFiles */, true /* enableGzip */, false /* addBlanks */, false /* addDate */, "" /* tempDir */, false /* copyFiles */,
null /* headerToCheckAgainst */, 4 /* maxDegreeOfParallelism */, _logger); _headerToCheckAgainst, 4 /* maxDegreeOfParallelism */, _logger);
} }
// Setup the fixdat // Setup the fixdat
@@ -369,7 +372,7 @@ namespace SabreTools.Helper
} }
// Now get the transformed file if it exists // Now get the transformed file if it exists
SkipperRule rule = Skipper.GetMatchingRule(input, "", _logger); SkipperRule rule = Skipper.GetMatchingRule(input, _headerToCheckAgainst, _logger);
// If we have have a non-empty rule, apply it // If we have have a non-empty rule, apply it
if (rule.Tests != null && rule.Tests.Count != 0) if (rule.Tests != null && rule.Tests.Count != 0)
@@ -824,7 +827,7 @@ namespace SabreTools.Helper
// Now attempt to see if the file has a header // Now attempt to see if the file has a header
FileStream input = File.OpenRead(file); FileStream input = File.OpenRead(file);
SkipperRule rule = Skipper.GetMatchingRule(input, "", _logger); SkipperRule rule = Skipper.GetMatchingRule(input, _headerToCheckAgainst, _logger);
// If there's a match, get the new information from the stream // If there's a match, get the new information from the stream
if (rule.Tests != null && rule.Tests.Count != 0) if (rule.Tests != null && rule.Tests.Count != 0)

View File

@@ -63,7 +63,7 @@ namespace SabreTools
logger.User("Organizing complete in " + DateTime.Now.Subtract(start).ToString(@"hh\:mm\:ss\.fffff")); logger.User("Organizing complete in " + DateTime.Now.Subtract(start).ToString(@"hh\:mm\:ss\.fffff"));
SimpleSort ss = new SimpleSort(datdata, newinputs, outDir, tempDir, false, false, SimpleSort ss = new SimpleSort(datdata, newinputs, outDir, tempDir, false, false,
false, false, delete, tgz, romba, asl, false, logger); false, false, delete, tgz, romba, asl, false, null, logger);
return ss.Convert(); return ss.Convert();
} }
@@ -304,9 +304,10 @@ namespace SabreTools
/// <param name="rar">Integer representing the archive handling level for RAR</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="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="updateDat">True if the updated DAT should be output, false otherwise</param>
/// <param name="headerToCheckAgainst">Populated string representing the name of the skipper to use, a blank string to use the first available checker, null otherwise</param>
/// <param name="logger">Logger object for file and console output</param> /// <param name="logger">Logger object for file and console output</param>
private static void InitSortVerify(List<string> datfiles, List<string> inputs, string outDir, string tempDir, bool quickScan, bool date, private static void InitSortVerify(List<string> datfiles, List<string> inputs, string outDir, string tempDir, bool quickScan, bool date,
bool toFolder, bool verify, bool delete, bool tgz, bool romba, int sevenzip, int gz, int rar, int zip, bool updateDat, Logger logger) bool toFolder, bool verify, bool delete, bool tgz, bool romba, int sevenzip, int gz, int rar, int zip, bool updateDat, string headerToCheckAgainst, Logger logger)
{ {
// Get the archive scanning level // Get the archive scanning level
ArchiveScanLevel asl = ArchiveTools.GetArchiveScanLevelFromNumbers(sevenzip, gz, rar, zip); ArchiveScanLevel asl = ArchiveTools.GetArchiveScanLevelFromNumbers(sevenzip, gz, rar, zip);
@@ -323,7 +324,7 @@ namespace SabreTools
logger.User("Populating complete in " + DateTime.Now.Subtract(start).ToString(@"hh\:mm\:ss\.fffff")); logger.User("Populating complete in " + DateTime.Now.Subtract(start).ToString(@"hh\:mm\:ss\.fffff"));
SimpleSort ss = new SimpleSort(datdata, inputs, outDir, tempDir, quickScan, date, SimpleSort ss = new SimpleSort(datdata, inputs, outDir, tempDir, quickScan, date,
toFolder, verify, delete, tgz, romba, asl, updateDat, logger); toFolder, verify, delete, tgz, romba, asl, updateDat, headerToCheckAgainst, logger);
ss.StartProcessing(); ss.StartProcessing();
} }

View File

@@ -56,7 +56,8 @@ namespace SabreTools
gz = 2, gz = 2,
rar = 2, rar = 2,
zip = 0; zip = 0;
string outDir = "", string header = "",
outDir = "",
tempDir = ""; tempDir = "";
List<string> inputs = new List<string>(); List<string> inputs = new List<string>();
List<string> datfiles = new List<string>(); List<string> datfiles = new List<string>();
@@ -116,6 +117,11 @@ namespace SabreTools
gz = 2; gz = 2;
} }
break; break;
case "-he":
case "--header":
i++;
header = args[i];
break;
case "-out": case "-out":
case "--out": case "--out":
i++; i++;
@@ -202,6 +208,10 @@ namespace SabreTools
gz = 2; gz = 2;
} }
break; break;
case "-h":
case "--header":
header = split[1];
break;
case "-out": case "-out":
case "--out": case "--out":
outDir = split[1]; outDir = split[1];
@@ -290,7 +300,7 @@ namespace SabreTools
if (datfiles.Count > 0) if (datfiles.Count > 0)
{ {
InitSortVerify(datfiles, inputs, outDir, tempDir, quickScan, date, toFolder, InitSortVerify(datfiles, inputs, outDir, tempDir, quickScan, date, toFolder,
verify, delete, tgz, romba, sevenzip, gz, rar, zip, updateDat, logger); verify, delete, tgz, romba, sevenzip, gz, rar, zip, updateDat, header, logger);
} }
else else
{ {
@@ -364,7 +374,7 @@ namespace SabreTools
logger.User("Organizing complete in " + DateTime.Now.Subtract(start).ToString(@"hh\:mm\:ss\.fffff")); logger.User("Organizing complete in " + DateTime.Now.Subtract(start).ToString(@"hh\:mm\:ss\.fffff"));
SimpleSort ss = new SimpleSort(datdata, newinputs, outDir, tempDir, false, false, SimpleSort ss = new SimpleSort(datdata, newinputs, outDir, tempDir, false, false,
false, false, delete, tgz, romba, asl, false, logger); false, false, delete, tgz, romba, asl, false, null, logger);
return ss.Convert(); return ss.Convert();
} }
@@ -387,9 +397,10 @@ namespace SabreTools
/// <param name="rar">Integer representing the archive handling level for RAR</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="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="updateDat">True if the updated DAT should be output, false otherwise</param>
/// <param name="headerToCheckAgainst">Populated string representing the name of the skipper to use, a blank string to use the first available checker, null otherwise</param>
/// <param name="logger">Logger object for file and console output</param> /// <param name="logger">Logger object for file and console output</param>
private static void InitSortVerify(List<string> datfiles, List<string> inputs, string outDir, string tempDir, bool quickScan, bool date, private static void InitSortVerify(List<string> datfiles, List<string> inputs, string outDir, string tempDir, bool quickScan, bool date,
bool toFolder, bool verify, bool delete, bool tgz, bool romba, int sevenzip, int gz, int rar, int zip, bool updateDat, Logger logger) bool toFolder, bool verify, bool delete, bool tgz, bool romba, int sevenzip, int gz, int rar, int zip, bool updateDat, string headerToCheckAgainst, Logger logger)
{ {
// Get the archive scanning level // Get the archive scanning level
ArchiveScanLevel asl = ArchiveTools.GetArchiveScanLevelFromNumbers(sevenzip, gz, rar, zip); ArchiveScanLevel asl = ArchiveTools.GetArchiveScanLevelFromNumbers(sevenzip, gz, rar, zip);
@@ -406,7 +417,7 @@ namespace SabreTools
logger.User("Populating complete in " + DateTime.Now.Subtract(start).ToString(@"hh\:mm\:ss\.fffff")); logger.User("Populating complete in " + DateTime.Now.Subtract(start).ToString(@"hh\:mm\:ss\.fffff"));
SimpleSort ss = new SimpleSort(datdata, inputs, outDir, tempDir, quickScan, date, SimpleSort ss = new SimpleSort(datdata, inputs, outDir, tempDir, quickScan, date,
toFolder, verify, delete, tgz, romba, asl, updateDat, logger); toFolder, verify, delete, tgz, romba, asl, updateDat, headerToCheckAgainst, logger);
ss.StartProcessing(); ss.StartProcessing();
} }
} }