mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
[DATFromDir, SimpleSort] Add flags for blanks and date
This commit is contained in:
@@ -67,7 +67,7 @@ namespace SabreTools
|
||||
};
|
||||
|
||||
DATFromDir dfd = new DATFromDir(inputs, datdata, false /* noMD5 */, false /* noSHA1 */, true /* bare */,
|
||||
false /* archivesAsFiles */, true /* enableGzip */, false /* addblanks */, "__temp__" /* tempdir */, _logger);
|
||||
false /* archivesAsFiles */, true /* enableGzip */, false /* addBlanks */, false /* addDate */, "__temp__" /* tempdir */, _logger);
|
||||
dfd.Start();
|
||||
}
|
||||
|
||||
|
||||
@@ -133,6 +133,8 @@ namespace SabreTools.Helper
|
||||
helptext.Add(" -v=, --version= Set the version of the DAT");
|
||||
helptext.Add(" -au=, --author= Set the author of the DAT");
|
||||
helptext.Add(" -sd, --superdat Enable SuperDAT creation");
|
||||
helptext.Add(" -ab, --add-blank Output blank files for folders");
|
||||
helptext.Add(" -ad, --add-date Output dates for each file parsed");
|
||||
helptext.Add(" -t=, --temp= Set the temporary directory to use");
|
||||
helptext.Add(" -mt={4} Amount of threads to use (-1 unlimted)");
|
||||
helptext.Add(" -es, --ext-split Split a DAT by two file extensions");
|
||||
|
||||
@@ -25,7 +25,8 @@ namespace SabreTools
|
||||
private bool _bare;
|
||||
private bool _archivesAsFiles;
|
||||
private bool _enableGzip;
|
||||
private bool _addblanks;
|
||||
private bool _addBlanks;
|
||||
private bool _addDate;
|
||||
private bool _nowrite;
|
||||
|
||||
// Other required variables
|
||||
@@ -47,11 +48,13 @@ namespace SabreTools
|
||||
/// <param name="bare">True if the date should be omitted from the DAT, false otherwise</param>
|
||||
/// <param name="archivesAsFiles">True if archives should be treated as files, false otherwise</param>
|
||||
/// <param name="enableGzip">True if GZIP archives should be treated as files, false otherwise</param>
|
||||
/// <param name="addblanks">True if blank items should be created for empty folders, false otherwise</param>
|
||||
/// <param name="addBlanks">True if blank items should be created for empty folders, false otherwise</param>
|
||||
/// <param name="addDate">True if dates should be archived for all files, false otherwise</param>
|
||||
/// <param name="tempDir">Name of the directory to create a temp folder in (blank is current directory)</param>
|
||||
/// <param name="nowrite">True if the file should not be written out, false otherwise (default)</param>
|
||||
/// <param name="logger">Logger object for console and file output</param>
|
||||
public DATFromDir(List<String> inputs, Dat datdata, bool noMD5, bool noSHA1, bool bare, bool archivesAsFiles, bool enableGzip, bool addblanks, string tempDir, Logger logger, bool nowrite = false)
|
||||
public DATFromDir(List<String> inputs, Dat datdata, bool noMD5, bool noSHA1, bool bare, bool archivesAsFiles,
|
||||
bool enableGzip, bool addBlanks, bool addDate, string tempDir, Logger logger, bool nowrite = false)
|
||||
{
|
||||
_inputs = inputs;
|
||||
_datdata = datdata;
|
||||
@@ -62,7 +65,8 @@ namespace SabreTools
|
||||
_enableGzip = enableGzip;
|
||||
_tempDir = tempDir;
|
||||
_logger = logger;
|
||||
_addblanks = addblanks;
|
||||
_addBlanks = addBlanks;
|
||||
_addDate = addDate;
|
||||
_nowrite = nowrite;
|
||||
}
|
||||
|
||||
@@ -167,7 +171,7 @@ namespace SabreTools
|
||||
}
|
||||
|
||||
// Now find all folders that are empty, if we are supposed to
|
||||
if (!_datdata.Romba && _addblanks)
|
||||
if (!_datdata.Romba && _addBlanks)
|
||||
{
|
||||
// If there were no subitems, add a "blank" game to to the set (if not in Romba mode)
|
||||
if (!items)
|
||||
@@ -257,7 +261,7 @@ namespace SabreTools
|
||||
}
|
||||
|
||||
// Now find all folders that are empty, if we are supposed to
|
||||
if (!_datdata.Romba && _addblanks)
|
||||
if (!_datdata.Romba && _addBlanks)
|
||||
{
|
||||
List<string> keys = _datdata.Files.Keys.ToList();
|
||||
foreach (string key in keys)
|
||||
@@ -465,7 +469,7 @@ namespace SabreTools
|
||||
private string ProcessFile(string item, StreamWriter sw, string basepath, string parent, Dat datdata, string lastparent)
|
||||
{
|
||||
_logger.Log(Path.GetFileName(item) + " treated like a file");
|
||||
Rom rom = FileTools.GetSingleFileInfo(item, _noMD5, _noSHA1);
|
||||
Rom rom = FileTools.GetSingleFileInfo(item, noMD5: _noMD5, noSHA1: _noSHA1, date: _addDate);
|
||||
|
||||
return ProcessFileHelper(item, rom, sw, basepath, parent, datdata, lastparent);
|
||||
}
|
||||
|
||||
@@ -24,7 +24,8 @@ namespace SabreTools
|
||||
private bool _bare;
|
||||
private bool _archivesAsFiles;
|
||||
private bool _enableGzip;
|
||||
private bool _addblanks;
|
||||
private bool _addBlanks;
|
||||
private bool _addDate;
|
||||
private int _maxDegreeOfParallelism;
|
||||
|
||||
// Other required variables
|
||||
@@ -46,12 +47,13 @@ namespace SabreTools
|
||||
/// <param name="bare">True if the date should be omitted from the DAT, false otherwise</param>
|
||||
/// <param name="archivesAsFiles">True if archives should be treated as files, false otherwise</param>
|
||||
/// <param name="enableGzip">True if GZIP archives should be treated as files, false otherwise</param>
|
||||
/// <param name="addblanks">True if blank items should be created for empty folders, false otherwise</param>
|
||||
/// <param name="addBlanks">True if blank items should be created for empty folders, false otherwise</param>
|
||||
/// <param name="addDate">True if dates should be archived for all files, false otherwise</param>
|
||||
/// <param name="tempDir">Name of the directory to create a temp folder in (blank is current directory)</param>
|
||||
/// <param name="maxDegreeOfParallelism">Integer representing the maximum amount of parallelization to be used</param>
|
||||
/// <param name="logger">Logger object for console and file output</param>
|
||||
public DATFromDirParallel(string basePath, Dat datdata, bool noMD5, bool noSHA1, bool bare,
|
||||
bool archivesAsFiles, bool enableGzip, bool addblanks, string tempDir, int maxDegreeOfParallelism, Logger logger)
|
||||
public DATFromDirParallel(string basePath, Dat datdata, bool noMD5, bool noSHA1, bool bare, bool archivesAsFiles,
|
||||
bool enableGzip, bool addBlanks, bool addDate, string tempDir, int maxDegreeOfParallelism, Logger logger)
|
||||
{
|
||||
_basePath = Path.GetFullPath(basePath);
|
||||
_datdata = datdata;
|
||||
@@ -62,7 +64,8 @@ namespace SabreTools
|
||||
_bare = bare;
|
||||
_archivesAsFiles = archivesAsFiles;
|
||||
_enableGzip = enableGzip;
|
||||
_addblanks = addblanks;
|
||||
_addBlanks = addBlanks;
|
||||
_addDate = addDate;
|
||||
_tempDir = tempDir;
|
||||
_maxDegreeOfParallelism = maxDegreeOfParallelism;
|
||||
_logger = logger;
|
||||
@@ -105,7 +108,7 @@ namespace SabreTools
|
||||
});
|
||||
|
||||
// Now find all folders that are empty, if we are supposed to
|
||||
if (!_datdata.Romba && _addblanks)
|
||||
if (!_datdata.Romba && _addBlanks)
|
||||
{
|
||||
Parallel.ForEach(Directory.EnumerateDirectories(_basePath, "*", SearchOption.AllDirectories),
|
||||
new ParallelOptions { MaxDegreeOfParallelism = _maxDegreeOfParallelism },
|
||||
@@ -297,7 +300,7 @@ namespace SabreTools
|
||||
private void ProcessFile(string item, string basepath, string parent)
|
||||
{
|
||||
_logger.Log(Path.GetFileName(item) + " treated like a file");
|
||||
Rom rom = FileTools.GetSingleFileInfo(item, _noMD5, _noSHA1);
|
||||
Rom rom = FileTools.GetSingleFileInfo(item, noMD5:_noMD5, noSHA1: _noSHA1, date: _addDate);
|
||||
|
||||
ProcessFileHelper(item, rom, basepath, parent);
|
||||
}
|
||||
|
||||
@@ -133,7 +133,7 @@ namespace SabreTools.Helper
|
||||
// Then, loop through and check each of the inputs
|
||||
_logger.User("Processing files:\n");
|
||||
DATFromDir dfd = new DATFromDir(files, _datdata, false /* noMD5 */, false /* noSHA1 */, false /* bare */,
|
||||
false /* archivesAsFiles */, true /* enableGzip */, false /* addblanks */, "" /* tempdir */, _logger, true /* nowrite */);
|
||||
false /* archivesAsFiles */, true /* enableGzip */, false /* addBlanks */, false /* addDate */, "" /* tempdir */, _logger, true /* nowrite */);
|
||||
dfd.Start();
|
||||
|
||||
// Setup the fixdat
|
||||
|
||||
@@ -230,6 +230,15 @@ Options:
|
||||
Set the type flag to "SuperDAT" for the output DAT as well as preserving the
|
||||
directory structure of the inputted folder, if applicable
|
||||
|
||||
-ab, --add-blank Output blank files for folders
|
||||
If this flag is set, then blank entries will be created for each of the empty
|
||||
directories in the source. This is useful for tools that require all folders
|
||||
be accounted for in the output DAT.
|
||||
|
||||
-ad, --add-date Output dates for each file parsed
|
||||
If this flag is set, then the Date will be appended to each file information
|
||||
in the output DAT. The output format is standardized as "yyyy/MM/dd HH:mm:ss".
|
||||
|
||||
-t=, --temp= Set the name of the temporary directory
|
||||
Optionally, a temp folder can be supplied in the case the default temp directory
|
||||
(inside the running folder) is not preferred. This is used for any operations
|
||||
|
||||
@@ -632,11 +632,13 @@ namespace SabreTools.Helper
|
||||
/// Retrieve file information for a single file
|
||||
/// </summary>
|
||||
/// <param name="input">Filename to get information from</param>
|
||||
/// <param name="noMD5">True if MD5 hashes should not be calculated, false otherwise</param>
|
||||
/// <param name="noSHA1">True if SHA-1 hashes should not be calcluated, false otherwise</param>
|
||||
/// <param name="noMD5">True if MD5 hashes should not be calculated, false otherwise (default)</param>
|
||||
/// <param name="noSHA1">True if SHA-1 hashes should not be calcluated, false otherwise (default)</param>
|
||||
/// <param name="offset">Set a >0 number for getting hash for part of the file, 0 otherwise (default)</param>
|
||||
/// <param name="date">True if the file Date should be included, false otherwise (default)</param>
|
||||
/// <returns>Populated RomData object if success, empty one on error</returns>
|
||||
/// <remarks>Add read-offset for hash info</remarks>
|
||||
public static Rom GetSingleFileInfo(string input, bool noMD5 = false, bool noSHA1 = false, long offset = 0)
|
||||
public static Rom GetSingleFileInfo(string input, bool noMD5 = false, bool noSHA1 = false, long offset = 0, bool date = false)
|
||||
{
|
||||
// Add safeguard if file doesn't exist
|
||||
if (!File.Exists(input))
|
||||
@@ -656,7 +658,7 @@ namespace SabreTools.Helper
|
||||
MD5 = string.Empty,
|
||||
SHA1 = string.Empty,
|
||||
},
|
||||
//Date = temp.LastWriteTime.ToString(),
|
||||
Date = (date ? temp.LastWriteTime.ToString("yyyy/MM/dd HH:mm:ss") : ""),
|
||||
};
|
||||
|
||||
try
|
||||
|
||||
@@ -101,7 +101,8 @@ namespace SabreTools
|
||||
/// <param name="bare">True if the date should be omitted from the DAT, false otherwise</param>
|
||||
/// <param name="archivesAsFiles">True if archives should be treated as files, false otherwise</param>
|
||||
/// <param name="enableGzip">True if GZIP archives should be treated as files, false otherwise</param>
|
||||
/// <param name="addblanks">True if blank items should be created for empty folders, false otherwise</param>
|
||||
/// <param name="addBlanks">True if blank items should be created for empty folders, false otherwise</param>
|
||||
/// <param name="addDate">True if dates should be archived for all files, false otherwise</param>
|
||||
/// <param name="tempDir">Name of the directory to create a temp folder in (blank is current directory</param>
|
||||
/// <param name="maxDegreeOfParallelism">Integer representing the maximum amount of parallelization to be used</param>
|
||||
private static void InitDatFromDir(List<string> inputs,
|
||||
@@ -120,7 +121,8 @@ namespace SabreTools
|
||||
bool bare,
|
||||
bool archivesAsFiles,
|
||||
bool enableGzip,
|
||||
bool addblanks,
|
||||
bool addBlanks,
|
||||
bool addDate,
|
||||
string tempDir,
|
||||
int maxDegreeOfParallelism)
|
||||
{
|
||||
@@ -144,7 +146,7 @@ namespace SabreTools
|
||||
// If the user has only set a single thread, use the original version
|
||||
if (maxDegreeOfParallelism == 1)
|
||||
{
|
||||
DATFromDir dfd = new DATFromDir(inputs, basedat, noMD5, noSHA1, bare, archivesAsFiles, enableGzip, addblanks, tempDir, _logger);
|
||||
DATFromDir dfd = new DATFromDir(inputs, basedat, noMD5, noSHA1, bare, archivesAsFiles, enableGzip, addBlanks, addDate, tempDir, _logger);
|
||||
bool success = dfd.Start();
|
||||
|
||||
// If we failed, show the help
|
||||
@@ -168,7 +170,7 @@ namespace SabreTools
|
||||
datdata.Files = new Dictionary<string, List<Rom>>();
|
||||
|
||||
string basePath = Path.GetFullPath(path);
|
||||
DATFromDirParallel dfd = new DATFromDirParallel(basePath, datdata, noMD5, noSHA1, bare, archivesAsFiles, enableGzip, addblanks, tempDir, maxDegreeOfParallelism, _logger);
|
||||
DATFromDirParallel dfd = new DATFromDirParallel(basePath, datdata, noMD5, noSHA1, bare, archivesAsFiles, enableGzip, addBlanks, addDate, tempDir, maxDegreeOfParallelism, _logger);
|
||||
bool success = dfd.Start();
|
||||
|
||||
// If it was a success, write the DAT out
|
||||
|
||||
@@ -77,7 +77,8 @@ namespace SabreTools
|
||||
// Set all default values
|
||||
bool help = false,
|
||||
add = false,
|
||||
addblanks = false,
|
||||
addBlanks = false,
|
||||
addDate = false,
|
||||
archivesAsFiles = false,
|
||||
bare = false,
|
||||
clean = false,
|
||||
@@ -177,6 +178,14 @@ namespace SabreTools
|
||||
case "--add":
|
||||
add = true;
|
||||
break;
|
||||
case "-ab":
|
||||
case "--add-blank":
|
||||
addBlanks = true;
|
||||
break;
|
||||
case "-ad":
|
||||
case "--add-date":
|
||||
addDate = true;
|
||||
break;
|
||||
case "-b":
|
||||
case "--bare":
|
||||
bare = true;
|
||||
@@ -661,7 +670,7 @@ namespace SabreTools
|
||||
else if (datfromdir)
|
||||
{
|
||||
InitDatFromDir(inputs, filename, name, description, category, version, author, forceunpack, outputFormat,
|
||||
romba, superdat, noMD5, noSHA1, bare, archivesAsFiles, enableGzip, addblanks, tempdir, maxParallelism);
|
||||
romba, superdat, noMD5, noSHA1, bare, archivesAsFiles, enableGzip, addBlanks, addDate, tempdir, maxParallelism);
|
||||
}
|
||||
|
||||
// Split a DAT by extension
|
||||
|
||||
Reference in New Issue
Block a user