[SabreTools] Add undocumented links to SimpleSort

This commit is contained in:
Matt Nadareski
2016-10-20 16:33:06 -07:00
parent 29e3a88682
commit 64c95b05c9
5 changed files with 192 additions and 43 deletions

View File

@@ -128,7 +128,7 @@ namespace SabreTools.Helper
helptext.Add(" -osl, --output-sl Output in Softwarelist format");
helptext.Add(" -otsv, --output-tsv Output in TSV format");
helptext.Add(" -ox, --output-xml Output in Logiqx XML format");
helptext.Add(" -gz, --gz-files Allow reading of GZIP files as archives");
helptext.Add(" -gzf, --gz-files Allow reading of GZIP files as archives");
helptext.Add(" -ro, --romba Read files from a Romba input");
helptext.Add(" -f=, --filename= Set the external name of the DAT");
helptext.Add(" -n=, --name= Set the internal name of the DAT");

View File

@@ -1006,7 +1006,7 @@ Below are originally from SabreTools / DATabase -
-ox, -output-xml Output in Logiqx XML format (default)
Add outputting the created DAT to Logiqx XML format
-gz, -gz-files Allow reading of GZIP files as archives
-gzf, -gz-files Allow reading of GZIP files as archives
Since GZip files are not commonly used for file storage, this flag allows for
any GZip archives to have their contents hashed instead.

View File

@@ -24,27 +24,26 @@ 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="logger">Logger object for file and console output</param>
public static bool InitConvertFolder(List<string> datfiles, List<string> inputs, string outDir, string tempDir, bool delete,
bool tgz, bool romba, int sevenzip, int gz, int rar, int zip, Logger logger)
bool tgz, bool romba, int sevenzip, int gz, int rar, int zip)
{
// Get the archive scanning level
ArchiveScanLevel asl = ArchiveTools.GetArchiveScanLevelFromNumbers(sevenzip, gz, rar, zip);
DateTime start = DateTime.Now;
logger.User("Populating internal DAT...");
_logger.User("Populating internal DAT...");
// Add all of the input DATs into one huge internal DAT
DatFile datdata = new DatFile();
foreach (string datfile in datfiles)
{
datdata.Parse(datfile, 99, 99, logger, keep: true, softlist: true);
datdata.Parse(datfile, 99, 99, _logger, keep: true, softlist: true);
}
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"));
// Get all individual files from the inputs
start = DateTime.Now;
logger.User("Organizing input files...");
_logger.User("Organizing input files...");
List<string> newinputs = new List<string>();
foreach (string input in inputs)
{
@@ -60,10 +59,10 @@ 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,
false, false, delete, tgz, romba, asl, false, null, logger);
false, false, delete, tgz, romba, asl, false, null, _logger);
return ss.Convert();
}
@@ -310,26 +309,25 @@ namespace SabreTools
/// <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="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>
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, string headerToCheckAgainst, Logger logger)
bool toFolder, bool verify, bool delete, bool tgz, bool romba, int sevenzip, int gz, int rar, int zip, bool updateDat, string headerToCheckAgainst)
{
// Get the archive scanning level
ArchiveScanLevel asl = ArchiveTools.GetArchiveScanLevelFromNumbers(sevenzip, gz, rar, zip);
DateTime start = DateTime.Now;
logger.User("Populating internal DAT...");
_logger.User("Populating internal DAT...");
// Add all of the input DATs into one huge internal DAT
DatFile datdata = new DatFile();
foreach (string datfile in datfiles)
{
datdata.Parse(datfile, 99, 99, logger, keep: true, softlist: true);
datdata.Parse(datfile, 99, 99, _logger, keep: true, softlist: true);
}
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,
toFolder, verify, delete, tgz, romba, asl, updateDat, headerToCheckAgainst, logger);
toFolder, verify, delete, tgz, romba, asl, updateDat, headerToCheckAgainst, _logger);
ss.StartProcessing();
}

View File

@@ -48,13 +48,16 @@ namespace SabreTools
// Feature flags
bool help = false,
convert = false, // SimpleSort
datFromDir = false,
headerer = false,
sort = false, // SimpleSort
splitByExt = false,
splitByHash = false,
splitByType = false,
stats = false,
update = false;
update = false,
verify = false; // SimpleSort
// User flags
bool addBlankFilesForEmptyFolder = false,
@@ -63,6 +66,7 @@ namespace SabreTools
copyFiles = false,
datPrefix = false,
dedup = false,
delete = false, // SimpleSort
enableGzip = false,
excludeOf = false,
inplace = false,
@@ -70,6 +74,7 @@ namespace SabreTools
noMD5 = false,
noSHA1 = false,
parseArchivesAsFiles = false,
quickScan = false, // SimpleSort
quotes = false,
remext = false,
removeDateFromAutomaticName = false,
@@ -80,15 +85,22 @@ namespace SabreTools
single = false,
softlist = false,
superdat = false,
tgz = false, // SimpleSort
toFolder = false, // SimpleSort
trim = false,
skip = false,
updateDat = false, // SimpleSort
usegame = true;
DiffMode diffMode = 0x0;
OutputFormat outputFormat = 0x0;
StatOutputFormat statOutputFormat = StatOutputFormat.None;
// User inputs
int maxParallelism = 4;
int gz = 2, // SimpleSort
maxParallelism = 4,
rar = 2, // SimpleSort
sevenzip = 0, // SimpleSort
zip = 0; // SimpleSort
long sgt = -1,
slt = -1,
seq = -1;
@@ -124,6 +136,7 @@ namespace SabreTools
tempDir = "",
url = null,
version = null;
List<string> datfiles = new List<string>(); // SimpleSort
List<string> inputs = new List<string>();
// Determine which switches are enabled (with values if necessary)
@@ -137,6 +150,10 @@ namespace SabreTools
case "--help":
help = true;
break;
case "-cv":
case "--convert":
convert = true;
break;
case "-d":
case "--d2d":
case "--dfd":
@@ -154,6 +171,10 @@ namespace SabreTools
case "--hash-split":
splitByHash = true;
break;
case "-ss":
case "--sort":
sort = true;
break;
case "-st":
case "--stats":
stats = true;
@@ -162,6 +183,10 @@ namespace SabreTools
case "--type-split":
splitByType = true;
break;
case "-ve":
case "--verify":
verify = true;
break;
// User flags
case "-ab":
@@ -200,6 +225,10 @@ namespace SabreTools
case "--dedup":
dedup = true;
break;
case "-del":
case "--delete":
delete = true;
break;
case "-di":
case "--diff":
diffMode |= DiffMode.All;
@@ -216,6 +245,10 @@ namespace SabreTools
case "--diff-nd":
diffMode |= DiffMode.NoDupes;
break;
case "-do":
case "--directory":
toFolder = true;
break;
case "-f":
case "--files":
parseArchivesAsFiles = true;
@@ -224,7 +257,7 @@ namespace SabreTools
case "--game-prefix":
datPrefix = true;
break;
case "-gz":
case "-gzf":
case "--gz-files":
enableGzip = true;
break;
@@ -312,6 +345,10 @@ namespace SabreTools
case "--quotes":
quotes = true;
break;
case "-qs":
case "--quick":
quickScan = true;
break;
case "-r":
case "--roms":
usegame = false;
@@ -348,6 +385,10 @@ namespace SabreTools
case "--softlist":
softlist = true;
break;
case "-tgz":
case "--tgz":
tgz = true;
break;
case "-trim":
case "--trim":
trim = true;
@@ -360,12 +401,24 @@ namespace SabreTools
case "--update":
update = true;
break;
case "-upd":
case "--updated-dat":
updateDat = true;
break;
case "-xof":
case "--exclude-of":
excludeOf = true;
break;
// User inputs
case "-7z":
case "--7z":
i++;
if (!Int32.TryParse(args[i], out sevenzip))
{
sevenzip = 0;
}
break;
case "-ae":
case "--add-ext":
i++;
@@ -396,6 +449,19 @@ namespace SabreTools
i++;
date = args[i];
break;
case "-dat":
case "--dat":
i++;
if (!File.Exists(args[i]))
{
_logger.Error("DAT must be a valid file: " + args[i]);
Console.WriteLine();
Build.Help();
_logger.Close();
return;
}
datfiles.Add(args[i]);
break;
case "-de":
case "--desc":
i++;
@@ -441,6 +507,14 @@ namespace SabreTools
i++;
gamename = args[i];
break;
case "-gz":
case "--gz":
i++;
if (!Int32.TryParse(args[i], out gz))
{
gz = 2;
}
break;
case "-he":
case "--header":
i++;
@@ -504,6 +578,14 @@ namespace SabreTools
i++;
prefix = args[i];
break;
case "-rar":
case "--rar":
i++;
if (!Int32.TryParse(args[i], out rar))
{
rar = 2;
}
break;
case "-rd":
case "--root-dir":
i++;
@@ -565,6 +647,14 @@ namespace SabreTools
i++;
version = args[i];
break;
case "-zip":
case "--zip":
i++;
if (!Int32.TryParse(args[i], out zip))
{
zip = 0;
}
break;
default:
string temparg = args[i].Replace("\"", "").Replace("file://", "");
@@ -579,6 +669,13 @@ namespace SabreTools
switch (split[0])
{
case "-7z":
case "--7z":
if (!Int32.TryParse(split[1], out sevenzip))
{
sevenzip = 0;
}
break;
case "-ae":
case "--add-ext":
addext = split[1];
@@ -603,6 +700,18 @@ namespace SabreTools
case "--date":
date = split[1];
break;
case "-dat":
case "--dat":
if (!File.Exists(split[1]))
{
_logger.Error("DAT must be a valid file: " + split[1]);
Console.WriteLine();
Build.Help();
_logger.Close();
return;
}
datfiles.Add(split[1]);
break;
case "-de":
case "--desc":
description = split[1];
@@ -639,6 +748,13 @@ namespace SabreTools
case "--game-name":
gamename = split[1];
break;
case "-gz":
case "--gz":
if (!Int32.TryParse(split[1], out gz))
{
gz = 2;
}
break;
case "-h":
case "--header":
header = split[1];
@@ -696,6 +812,13 @@ namespace SabreTools
case "--root":
rootdir = split[1];
break;
case "-rar":
case "--rar":
if (!Int32.TryParse(split[1], out rar))
{
rar = 2;
}
break;
case "-rd":
case "--root-dir":
root = split[1];
@@ -741,6 +864,13 @@ namespace SabreTools
case "--version":
version = split[1];
break;
case "-zip":
case "--zip":
if (!Int32.TryParse(split[1], out zip))
{
zip = 0;
}
break;
default:
if (File.Exists(temparg) || Directory.Exists(temparg))
{
@@ -806,8 +936,15 @@ namespace SabreTools
// Now take care of each mode in succesion
// Convert a folder to TGZ or TorrentZip
if (convert)
{
InitConvertFolder(datfiles, inputs, outDir, tempDir, delete, tgz, romba, sevenzip,
gz, rar, zip);
}
// Create a DAT from a directory or set of directories
if (datFromDir)
else if (datFromDir)
{
InitDatFromDir(inputs,
filename,
@@ -841,6 +978,13 @@ namespace SabreTools
InitHeaderer(inputs, restore, outDir);
}
// If we're using the sorter
else if (sort)
{
InitSortVerify(datfiles, inputs, outDir, tempDir, quickScan, addFileDates, toFolder,
verify, delete, tgz, romba, sevenzip, gz, rar, zip, updateDat, header);
}
// Split a DAT by extension
else if (splitByExt)
{
@@ -853,18 +997,18 @@ namespace SabreTools
InitHashSplit(inputs, outDir);
}
// Get statistics on input files
else if (stats)
{
InitStats(inputs, filename, single, showBaddumpColumn, showNodumpColumn, statOutputFormat);
}
// Split a DAT by item type
else if (splitByType)
{
InitTypeSplit(inputs, outDir);
}
// Get statistics on input files
else if (stats)
{
InitStats(inputs, filename, single, showBaddumpColumn, showNodumpColumn, statOutputFormat);
}
// Convert, update, merge, diff, and filter a DAT or folder of DATs
else if (update)
{
@@ -874,6 +1018,13 @@ namespace SabreTools
romtype, sgt, slt, seq, crc, md5, sha1, status, trim, single, root, outDir, cleanGameNames, softlist, dedup, maxParallelism);
}
// If we're using the verifier
else if (verify)
{
InitSortVerify(datfiles, inputs, outDir, tempDir, quickScan, addFileDates, toFolder,
verify, delete, tgz, romba, sevenzip, gz, rar, zip, updateDat, header);
}
// If nothing is set, show the help
else
{

View File

@@ -42,18 +42,18 @@ namespace SabreTools
// Feature flags
bool help = false,
simpleSort = true;
convert = false,
sort = true,
verify = false;
// User flags
bool convert = false,
date = false,
bool date = false,
delete = false,
quickScan = false,
romba = false,
toFolder = false,
tgz = false,
updateDat = false,
verify = false;
updateDat = false;
// User inputs
int sevenzip = 0,
@@ -63,8 +63,8 @@ namespace SabreTools
string header = "",
outDir = "",
tempDir = "";
List<string> inputs = new List<string>();
List<string> datfiles = new List<string>();
List<string> inputs = new List<string>();
// Determine which switches are enabled (with values if necessary)
for (int i = 0; i < args.Length; i++)
@@ -77,9 +77,17 @@ namespace SabreTools
case "--help":
help = true;
break;
case "-c":
case "--convert":
convert = true;
break;
case "-ss":
case "--sort":
simpleSort = true;
sort = true;
break;
case "-v":
case "--verify":
verify = true;
break;
// User flags
@@ -87,10 +95,6 @@ namespace SabreTools
case "--add-date":
date = true;
break;
case "-c":
case "--convert":
convert = true;
break;
case "-d":
case "--delete":
delete = true;
@@ -115,10 +119,6 @@ namespace SabreTools
case "--updated-dat":
updateDat = true;
break;
case "-v":
case "--verify":
verify = true;
break;
// User inputs
case "-7z":
@@ -292,7 +292,7 @@ namespace SabreTools
}
// If a switch that requires a filename is set and no file is, show the help screen
if (inputs.Count == 0 && ((simpleSort && !verify) || convert))
if (inputs.Count == 0 && ((sort && !verify) || convert))
{
logger.Error("This feature requires at least one input");
Build.Help();
@@ -308,7 +308,7 @@ namespace SabreTools
}
// If we are doing a simple sort
else if (simpleSort)
else if (sort)
{
if (datfiles.Count > 0)
{