mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
[ALL] Add filtering support to D2D and Verify
Verify came for free since it uses the D2D code
This commit is contained in:
@@ -66,8 +66,8 @@ namespace RombaSharp
|
||||
foreach (string dir in onlyDirs)
|
||||
{
|
||||
// TODO: All instances of Hash.DeepHashes should be made into 0x0 eventually
|
||||
df.PopulateFromDir(dir, Hash.DeepHashes, false, false, SkipFileType.None, false, false, _tmpdir, false, null, true);
|
||||
df.PopulateFromDir(dir, Hash.DeepHashes, false, true, SkipFileType.None, false, false, _tmpdir, false, null, true);
|
||||
df.PopulateFromDir(dir, Hash.DeepHashes, false, false, SkipFileType.None, false, false, _tmpdir, false, null, true, null);
|
||||
df.PopulateFromDir(dir, Hash.DeepHashes, false, true, SkipFileType.None, false, false, _tmpdir, false, null, true, null);
|
||||
}
|
||||
|
||||
// Create an empty Dat for files that need to be rebuilt
|
||||
@@ -390,7 +390,7 @@ namespace RombaSharp
|
||||
// Now run the D2D on the input and write out
|
||||
// TODO: All instances of Hash.DeepHashes should be made into 0x0 eventually
|
||||
datfile.PopulateFromDir(source, Hash.DeepHashes, true /* bare */, false /* archivesAsFiles */, SkipFileType.None, false /* addBlanks */,
|
||||
false /* addDate */, _tmpdir, false /* copyFiles */, null /* headerToCheckAgainst */, true /* chdsAsFiles */);
|
||||
false /* addDate */, _tmpdir, false /* copyFiles */, null /* headerToCheckAgainst */, true /* chdsAsFiles */, null /* filter */);
|
||||
datfile.Write(outDir: outdat);
|
||||
}
|
||||
|
||||
@@ -897,7 +897,7 @@ namespace RombaSharp
|
||||
// First get a list of SHA-1's from the input DATs
|
||||
DatFile datroot = new DatFile { Type = "SuperDAT", };
|
||||
// TODO: All instances of Hash.DeepHashes should be made into 0x0 eventually
|
||||
datroot.PopulateFromDir(_dats, Hash.DeepHashes, false, false, SkipFileType.None, false, false, _tmpdir, false, null, true);
|
||||
datroot.PopulateFromDir(_dats, Hash.DeepHashes, false, false, SkipFileType.None, false, false, _tmpdir, false, null, true, null);
|
||||
datroot.BucketBy(SortedBy.SHA1, DedupeType.None);
|
||||
|
||||
// Create a List of dat hashes in the database (SHA-1)
|
||||
@@ -1013,7 +1013,7 @@ namespace RombaSharp
|
||||
// Now rescan the depot itself
|
||||
DatFile depot = new DatFile();
|
||||
// TODO: All instances of Hash.DeepHashes should be made into 0x0 eventually
|
||||
depot.PopulateFromDir(depotname, Hash.DeepHashes, false, false, SkipFileType.None, false, false, _tmpdir, false, null, true);
|
||||
depot.PopulateFromDir(depotname, Hash.DeepHashes, false, false, SkipFileType.None, false, false, _tmpdir, false, null, true, null);
|
||||
depot.BucketBy(SortedBy.SHA1, DedupeType.None);
|
||||
|
||||
// Set the base queries to use
|
||||
|
||||
@@ -3277,8 +3277,9 @@ namespace SabreTools.Library.DatFiles
|
||||
/// <param name="copyFiles">True if files should be copied to the temp directory before hashing, 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="chdsAsFiles">True if CHDs should be treated like regular files, false otherwise</param>
|
||||
/// <param name="filter">Filter object to be passed to the DatItem level</param>
|
||||
public bool PopulateFromDir(string basePath, Hash omitFromScan, bool bare, bool archivesAsFiles, SkipFileType skipFileType,
|
||||
bool addBlanks, bool addDate, string tempDir, bool copyFiles, string headerToCheckAgainst, bool chdsAsFiles)
|
||||
bool addBlanks, bool addDate, string tempDir, bool copyFiles, string headerToCheckAgainst, bool chdsAsFiles, Filter filter)
|
||||
{
|
||||
// If the description is defined but not the name, set the name from the description
|
||||
if (String.IsNullOrWhiteSpace(Name) && !String.IsNullOrWhiteSpace(Description))
|
||||
@@ -3379,6 +3380,12 @@ namespace SabreTools.Library.DatFiles
|
||||
Utilities.TryDeleteDirectory(tempDir);
|
||||
}
|
||||
|
||||
// If we have a valid filter, perform the filtering now
|
||||
if (filter != null && filter != default(Filter))
|
||||
{
|
||||
filter.FilterDatFile(this);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -4523,8 +4530,9 @@ namespace SabreTools.Library.DatFiles
|
||||
/// <param name="quickScan">True to enable external scanning of archives, 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="chdsAsFiles">True if CHDs should be treated like regular files, false otherwise</param>
|
||||
/// <param name="filter">Filter object to be passed to the DatItem level</param>
|
||||
/// <returns>True if verification was a success, false otherwise</returns>
|
||||
public bool VerifyGeneric(List<string> inputs, bool hashOnly, bool quickScan, string headerToCheckAgainst, bool chdsAsFiles)
|
||||
public bool VerifyGeneric(List<string> inputs, bool hashOnly, bool quickScan, string headerToCheckAgainst, bool chdsAsFiles, Filter filter)
|
||||
{
|
||||
// TODO: We want the cross section of what's the folder and what's in the DAT. Right now, it just has what's in the DAT that's not in the folder
|
||||
bool success = true;
|
||||
@@ -4535,7 +4543,7 @@ namespace SabreTools.Library.DatFiles
|
||||
{
|
||||
// TODO: All instances of Hash.DeepHashes should be made into 0x0 eventually
|
||||
PopulateFromDir(input, (quickScan ? Hash.SecureHashes : Hash.DeepHashes) /* omitFromScan */, true /* bare */, false /* archivesAsFiles */,
|
||||
SkipFileType.None, false /* addBlanks */, false /* addDate */, "" /* tempDir */, false /* copyFiles */, headerToCheckAgainst, chdsAsFiles);
|
||||
SkipFileType.None, false /* addBlanks */, false /* addDate */, "" /* tempDir */, false /* copyFiles */, headerToCheckAgainst, chdsAsFiles, filter);
|
||||
}
|
||||
|
||||
// Setup the fixdat
|
||||
|
||||
@@ -330,6 +330,165 @@ Options:
|
||||
compare against the input DATs. This flag forces all CHDs to be
|
||||
treated like regular files.
|
||||
|
||||
-gn=, --game-name= Filter by game name
|
||||
Include only items with this game name in the output. Additionally,
|
||||
the user can specify an exact match or full C#-style regex for
|
||||
pattern matching. Multiple instances of this flag are allowed.
|
||||
|
||||
-ngn=, --not-game-name= Filter by not game name
|
||||
Include only items without this game name in the output.
|
||||
Additionally, the user can specify an exact match or full C#-style
|
||||
regex for pattern matching. Multiple instances of this flag are
|
||||
allowed.
|
||||
|
||||
-gd=, --game-description= Filter by game description
|
||||
Include only items with this game description in the output.
|
||||
Additionally, the user can specify an exact match or full C#-style
|
||||
regex for pattern matching. Multiple instances of this flag are
|
||||
allowed.
|
||||
|
||||
-ngd=, --not-game-description= Filter by not game description
|
||||
Include only items without this game description in the output.
|
||||
Additionally, the user can specify an exact match or full C#-style
|
||||
regex for pattern matching. Multiple instances of this flag are
|
||||
allowed.
|
||||
|
||||
-ofg, --match-of-tags Allow cloneof and romof tags to match game name filters
|
||||
If filter or exclude by game name is used, this flag will allow those
|
||||
filters to be checked against the romof and cloneof tags as well.
|
||||
This can allow for more advanced set-building, especially in
|
||||
arcade-based sets.
|
||||
|
||||
-rn=, --item-name= Filter by item name
|
||||
Include only items with this item name in the output. Additionally,
|
||||
the user can specify an exact match or full C#-style regex for
|
||||
pattern matching. Multiple instances of this flag are allowed.
|
||||
|
||||
-nrn=, --not-item-name= Filter by not item name
|
||||
Include only items without this item name in the output.
|
||||
Additionally, the user can specify an exact match or full C#-style
|
||||
regex for pattern matching. Multiple instances of this flag are
|
||||
allowed.
|
||||
|
||||
-rt=, --item-type= Filter by item type
|
||||
Include only items with this item type in the output. Additionally,
|
||||
the user can specify an exact match or full C#-style regex for
|
||||
pattern matching. Multiple instances of this flag are allowed.
|
||||
|
||||
-nrt=, --not-item-type= Filter by not item type
|
||||
Include only items without this item type in the output.
|
||||
Additionally, the user can specify an exact match or full C#-style
|
||||
regex for pattern matching. Multiple instances of this flag are
|
||||
allowed.
|
||||
|
||||
-sgt=, --greater= Filter by size >=
|
||||
Only include items whose size is greater than or equal to this value
|
||||
in the output DAT. Users can specify either a regular integer number
|
||||
or a number with a standard postfix. e.g. 8kb => 8000 or 8kib => 8192
|
||||
|
||||
-slt=, --less= Filter by size =<
|
||||
Only include items whose size is less than or equal to this value in
|
||||
the output DAT. Users can specify either a regular integer number or
|
||||
a number with a standard postfix. e.g. 8kb => 8000 or 8kib => 8192
|
||||
|
||||
-seq=, --equal= Filter by size ==
|
||||
Only include items of this exact size in the output DAT. Users can
|
||||
specify either a regular integer number or a number with a standard
|
||||
postfix. e.g. 8kb => 8000 or 8kib => 8192
|
||||
|
||||
-crc=, --crc= Filter by CRC hash
|
||||
Include only items with this CRC hash in the output. Additionally,
|
||||
the user can specify an exact match or full C#-style regex for
|
||||
pattern matching. Multiple instances of this flag are allowed.
|
||||
|
||||
-ncrc=, --not-crc= Filter by not CRC hash
|
||||
Include only items without this CRC hash in the output. Additionally,
|
||||
the user can specify an exact match or full C#-style regex for
|
||||
pattern matching. Multiple instances of this flag are allowed.
|
||||
|
||||
-md5=, --md5= Filter by MD5 hash
|
||||
Include only items with this MD5 hash in the output. Additionally,
|
||||
the user can specify an exact match or full C#-style regex for
|
||||
pattern matching. Multiple instances of this flag are allowed.
|
||||
|
||||
-nmd5=, --not-md5= Filter by not MD5 hash
|
||||
Include only items without this MD5 hash in the output. Additionally,
|
||||
the user can specify an exact match or full C#-style regex for
|
||||
pattern matching. Multiple instances of this flag are allowed.
|
||||
|
||||
-sha1=, --sha1= Filter by SHA-1 hash
|
||||
Include only items with this SHA-1 hash in the output. Additionally,
|
||||
the user can specify an exact match or full C#-style regex for
|
||||
pattern matching. Multiple instances of this flag are allowed.
|
||||
|
||||
-nsha1=, --not-sha1= Filter by not SHA-1 hash
|
||||
Include only items without this SHA-1 hash in the output.
|
||||
Additionally, the user can specify an exact match or full C#-style
|
||||
regex for pattern matching. Multiple instances of this flag are
|
||||
allowed.
|
||||
|
||||
-sha256=, --sha256= Filter by SHA-256 hash
|
||||
Include only items with this SHA-256 hash in the output.
|
||||
Additionally, the user can specify an exact match or full C#-style
|
||||
regex for pattern matching. Multiple instances of this flag are
|
||||
allowed.
|
||||
|
||||
-nsha256=, --not-sha256= Filter by not SHA-256 hash
|
||||
Include only items without this SHA-256 hash in the output.
|
||||
Additionally, the user can specify an exact match or full C#-style
|
||||
regex for pattern matching. Multiple instances of this flag are
|
||||
allowed.
|
||||
|
||||
-sha384=, --sha384= Filter by SHA-384 hash
|
||||
Include only items with this SHA-384 hash in the output.
|
||||
Additionally, the user can specify an exact match or full C#-style
|
||||
regex for pattern matching. Multiple instances of this flag are
|
||||
allowed.
|
||||
|
||||
-nsha384=, --not-sha384= Filter by not SHA-384 hash
|
||||
Include only items without this SHA-384 hash in the output.
|
||||
Additionally, the user can specify an exact match or full C#-style
|
||||
regex for pattern matching. Multiple instances of this flag are
|
||||
allowed.
|
||||
|
||||
-sha512=, --sha512= Filter by SHA-512 hash
|
||||
Include only items with this SHA-512 hash in the output.
|
||||
Additionally, the user can specify an exact match or full C#-style
|
||||
regex for pattern matching. Multiple instances of this flag are
|
||||
allowed.
|
||||
|
||||
-nsha512=, --not-sha512= Filter by not SHA-512 hash
|
||||
Include only items without this SHA-512 hash in the output.
|
||||
Additionally, the user can specify an exact match or full C#-style
|
||||
regex for pattern matching. Multiple instances of this flag are
|
||||
allowed.
|
||||
|
||||
-is=, --status= Include only items with a given status
|
||||
Include only items with this item status in the output. Multiple
|
||||
instances of this flag are allowed.
|
||||
Possible values are: None, Good, BadDump, Nodump, Verified
|
||||
|
||||
-nis=, --not-status= Exclude only items with a given status
|
||||
Include only items without this item status in the output. Multiple
|
||||
instances of this flag are allowed.
|
||||
Possible values are: None, Good, BadDump, Nodump, Verified
|
||||
|
||||
-gt=, --game-type= Include only games with a given type
|
||||
Include only items with this game type in the output. Multiple
|
||||
instances of this flag are allowed.
|
||||
Possible values are: None, Bios, Device, Mechanical
|
||||
|
||||
-ngt=, --not-game-type= Exclude only games with a given type
|
||||
Include only items without this game type in the output. Multiple
|
||||
instances of this flag are allowed.
|
||||
Possible values are: None, Bios, Device, Mechanical
|
||||
|
||||
-run, --runnable Include only items that are marked runnable
|
||||
This allows users to include only verified runnable games.
|
||||
|
||||
-nrun, --not-runnable Include only items that are not marked runnable
|
||||
This allows users to include only unrunnable games.
|
||||
|
||||
-t=, --temp= Set the temporary directory to use
|
||||
Optionally, a temp folder can be supplied in the case the default
|
||||
temp directory is not preferred.
|
||||
@@ -1368,6 +1527,165 @@ Options:
|
||||
parent sets based on the cloneof and romof tags as well as device
|
||||
references. This is incompatible with the other --dat-X flags.
|
||||
|
||||
-gn=, --game-name= Filter by game name
|
||||
Include only items with this game name in the output. Additionally,
|
||||
the user can specify an exact match or full C#-style regex for
|
||||
pattern matching. Multiple instances of this flag are allowed.
|
||||
|
||||
-ngn=, --not-game-name= Filter by not game name
|
||||
Include only items without this game name in the output.
|
||||
Additionally, the user can specify an exact match or full C#-style
|
||||
regex for pattern matching. Multiple instances of this flag are
|
||||
allowed.
|
||||
|
||||
-gd=, --game-description= Filter by game description
|
||||
Include only items with this game description in the output.
|
||||
Additionally, the user can specify an exact match or full C#-style
|
||||
regex for pattern matching. Multiple instances of this flag are
|
||||
allowed.
|
||||
|
||||
-ngd=, --not-game-description= Filter by not game description
|
||||
Include only items without this game description in the output.
|
||||
Additionally, the user can specify an exact match or full C#-style
|
||||
regex for pattern matching. Multiple instances of this flag are
|
||||
allowed.
|
||||
|
||||
-ofg, --match-of-tags Allow cloneof and romof tags to match game name filters
|
||||
If filter or exclude by game name is used, this flag will allow those
|
||||
filters to be checked against the romof and cloneof tags as well.
|
||||
This can allow for more advanced set-building, especially in
|
||||
arcade-based sets.
|
||||
|
||||
-rn=, --item-name= Filter by item name
|
||||
Include only items with this item name in the output. Additionally,
|
||||
the user can specify an exact match or full C#-style regex for
|
||||
pattern matching. Multiple instances of this flag are allowed.
|
||||
|
||||
-nrn=, --not-item-name= Filter by not item name
|
||||
Include only items without this item name in the output.
|
||||
Additionally, the user can specify an exact match or full C#-style
|
||||
regex for pattern matching. Multiple instances of this flag are
|
||||
allowed.
|
||||
|
||||
-rt=, --item-type= Filter by item type
|
||||
Include only items with this item type in the output. Additionally,
|
||||
the user can specify an exact match or full C#-style regex for
|
||||
pattern matching. Multiple instances of this flag are allowed.
|
||||
|
||||
-nrt=, --not-item-type= Filter by not item type
|
||||
Include only items without this item type in the output.
|
||||
Additionally, the user can specify an exact match or full C#-style
|
||||
regex for pattern matching. Multiple instances of this flag are
|
||||
allowed.
|
||||
|
||||
-sgt=, --greater= Filter by size >=
|
||||
Only include items whose size is greater than or equal to this value
|
||||
in the output DAT. Users can specify either a regular integer number
|
||||
or a number with a standard postfix. e.g. 8kb => 8000 or 8kib => 8192
|
||||
|
||||
-slt=, --less= Filter by size =<
|
||||
Only include items whose size is less than or equal to this value in
|
||||
the output DAT. Users can specify either a regular integer number or
|
||||
a number with a standard postfix. e.g. 8kb => 8000 or 8kib => 8192
|
||||
|
||||
-seq=, --equal= Filter by size ==
|
||||
Only include items of this exact size in the output DAT. Users can
|
||||
specify either a regular integer number or a number with a standard
|
||||
postfix. e.g. 8kb => 8000 or 8kib => 8192
|
||||
|
||||
-crc=, --crc= Filter by CRC hash
|
||||
Include only items with this CRC hash in the output. Additionally,
|
||||
the user can specify an exact match or full C#-style regex for
|
||||
pattern matching. Multiple instances of this flag are allowed.
|
||||
|
||||
-ncrc=, --not-crc= Filter by not CRC hash
|
||||
Include only items without this CRC hash in the output. Additionally,
|
||||
the user can specify an exact match or full C#-style regex for
|
||||
pattern matching. Multiple instances of this flag are allowed.
|
||||
|
||||
-md5=, --md5= Filter by MD5 hash
|
||||
Include only items with this MD5 hash in the output. Additionally,
|
||||
the user can specify an exact match or full C#-style regex for
|
||||
pattern matching. Multiple instances of this flag are allowed.
|
||||
|
||||
-nmd5=, --not-md5= Filter by not MD5 hash
|
||||
Include only items without this MD5 hash in the output. Additionally,
|
||||
the user can specify an exact match or full C#-style regex for
|
||||
pattern matching. Multiple instances of this flag are allowed.
|
||||
|
||||
-sha1=, --sha1= Filter by SHA-1 hash
|
||||
Include only items with this SHA-1 hash in the output. Additionally,
|
||||
the user can specify an exact match or full C#-style regex for
|
||||
pattern matching. Multiple instances of this flag are allowed.
|
||||
|
||||
-nsha1=, --not-sha1= Filter by not SHA-1 hash
|
||||
Include only items without this SHA-1 hash in the output.
|
||||
Additionally, the user can specify an exact match or full C#-style
|
||||
regex for pattern matching. Multiple instances of this flag are
|
||||
allowed.
|
||||
|
||||
-sha256=, --sha256= Filter by SHA-256 hash
|
||||
Include only items with this SHA-256 hash in the output.
|
||||
Additionally, the user can specify an exact match or full C#-style
|
||||
regex for pattern matching. Multiple instances of this flag are
|
||||
allowed.
|
||||
|
||||
-nsha256=, --not-sha256= Filter by not SHA-256 hash
|
||||
Include only items without this SHA-256 hash in the output.
|
||||
Additionally, the user can specify an exact match or full C#-style
|
||||
regex for pattern matching. Multiple instances of this flag are
|
||||
allowed.
|
||||
|
||||
-sha384=, --sha384= Filter by SHA-384 hash
|
||||
Include only items with this SHA-384 hash in the output.
|
||||
Additionally, the user can specify an exact match or full C#-style
|
||||
regex for pattern matching. Multiple instances of this flag are
|
||||
allowed.
|
||||
|
||||
-nsha384=, --not-sha384= Filter by not SHA-384 hash
|
||||
Include only items without this SHA-384 hash in the output.
|
||||
Additionally, the user can specify an exact match or full C#-style
|
||||
regex for pattern matching. Multiple instances of this flag are
|
||||
allowed.
|
||||
|
||||
-sha512=, --sha512= Filter by SHA-512 hash
|
||||
Include only items with this SHA-512 hash in the output.
|
||||
Additionally, the user can specify an exact match or full C#-style
|
||||
regex for pattern matching. Multiple instances of this flag are
|
||||
allowed.
|
||||
|
||||
-nsha512=, --not-sha512= Filter by not SHA-512 hash
|
||||
Include only items without this SHA-512 hash in the output.
|
||||
Additionally, the user can specify an exact match or full C#-style
|
||||
regex for pattern matching. Multiple instances of this flag are
|
||||
allowed.
|
||||
|
||||
-is=, --status= Include only items with a given status
|
||||
Include only items with this item status in the output. Multiple
|
||||
instances of this flag are allowed.
|
||||
Possible values are: None, Good, BadDump, Nodump, Verified
|
||||
|
||||
-nis=, --not-status= Exclude only items with a given status
|
||||
Include only items without this item status in the output. Multiple
|
||||
instances of this flag are allowed.
|
||||
Possible values are: None, Good, BadDump, Nodump, Verified
|
||||
|
||||
-gt=, --game-type= Include only games with a given type
|
||||
Include only items with this game type in the output. Multiple
|
||||
instances of this flag are allowed.
|
||||
Possible values are: None, Bios, Device, Mechanical
|
||||
|
||||
-ngt=, --not-game-type= Exclude only games with a given type
|
||||
Include only items without this game type in the output. Multiple
|
||||
instances of this flag are allowed.
|
||||
Possible values are: None, Bios, Device, Mechanical
|
||||
|
||||
-run, --runnable Include only items that are marked runnable
|
||||
This allows users to include only verified runnable games.
|
||||
|
||||
-nrun, --not-runnable Include only items that are not marked runnable
|
||||
This allows users to include only unrunnable games.
|
||||
|
||||
** Section 3.0 - Examples
|
||||
|
||||
Here are a few usage examples based on features that are commonly used by most
|
||||
|
||||
@@ -2405,6 +2405,36 @@ Some special strings that can be used:
|
||||
datFromDir.AddFeature(_copyFilesFlag);
|
||||
datFromDir.AddFeature(_headerStringInput);
|
||||
datFromDir.AddFeature(_chdsAsFilesFlag);
|
||||
datFromDir.AddFeature(_gameNameListInput);
|
||||
datFromDir.AddFeature(_notGameNameListInput);
|
||||
datFromDir.AddFeature(_gameDescriptionListInput);
|
||||
datFromDir.AddFeature(_notGameDescriptionListInput);
|
||||
datFromDir.AddFeature(_matchOfTagsFlag);
|
||||
datFromDir.AddFeature(_itemNameListInput);
|
||||
datFromDir.AddFeature(_notItemNameListInput);
|
||||
datFromDir.AddFeature(_itemTypeListInput);
|
||||
datFromDir.AddFeature(_notItemTypeListInput);
|
||||
datFromDir.AddFeature(_greaterStringInput);
|
||||
datFromDir.AddFeature(_lessStringInput);
|
||||
datFromDir.AddFeature(_equalStringInput);
|
||||
datFromDir.AddFeature(_crcListInput);
|
||||
datFromDir.AddFeature(_notCrcListInput);
|
||||
datFromDir.AddFeature(_md5ListInput);
|
||||
datFromDir.AddFeature(_notMd5ListInput);
|
||||
datFromDir.AddFeature(_sha1ListInput);
|
||||
datFromDir.AddFeature(_notSha1ListInput);
|
||||
datFromDir.AddFeature(_sha256ListInput);
|
||||
datFromDir.AddFeature(_notSha256ListInput);
|
||||
datFromDir.AddFeature(_sha384ListInput);
|
||||
datFromDir.AddFeature(_notSha384ListInput);
|
||||
datFromDir.AddFeature(_sha512ListInput);
|
||||
datFromDir.AddFeature(_notSha512ListInput);
|
||||
datFromDir.AddFeature(_statusListInput);
|
||||
datFromDir.AddFeature(_notStatusListInput);
|
||||
datFromDir.AddFeature(_gameTypeListInput);
|
||||
datFromDir.AddFeature(_notGameTypeListInput);
|
||||
datFromDir.AddFeature(_runnableFlag);
|
||||
datFromDir.AddFeature(_notRunnableFlag);
|
||||
datFromDir.AddFeature(_tempStringInput);
|
||||
datFromDir.AddFeature(_outputDirStringInput);
|
||||
datFromDir.AddFeature(_threadsInt32Input);
|
||||
@@ -2787,6 +2817,36 @@ The stats that are outputted are as follows:
|
||||
verify.AddFeature(_datDeviceNonMergedFlag);
|
||||
verify.AddFeature(_datNonMergedFlag);
|
||||
verify.AddFeature(_datFullNonMergedFlag);
|
||||
verify.AddFeature(_gameNameListInput);
|
||||
verify.AddFeature(_notGameNameListInput);
|
||||
verify.AddFeature(_gameDescriptionListInput);
|
||||
verify.AddFeature(_notGameDescriptionListInput);
|
||||
verify.AddFeature(_matchOfTagsFlag);
|
||||
verify.AddFeature(_itemNameListInput);
|
||||
verify.AddFeature(_notItemNameListInput);
|
||||
verify.AddFeature(_itemTypeListInput);
|
||||
verify.AddFeature(_notItemTypeListInput);
|
||||
verify.AddFeature(_greaterStringInput);
|
||||
verify.AddFeature(_lessStringInput);
|
||||
verify.AddFeature(_equalStringInput);
|
||||
verify.AddFeature(_crcListInput);
|
||||
verify.AddFeature(_notCrcListInput);
|
||||
verify.AddFeature(_md5ListInput);
|
||||
verify.AddFeature(_notMd5ListInput);
|
||||
verify.AddFeature(_sha1ListInput);
|
||||
verify.AddFeature(_notSha1ListInput);
|
||||
verify.AddFeature(_sha256ListInput);
|
||||
verify.AddFeature(_notSha256ListInput);
|
||||
verify.AddFeature(_sha384ListInput);
|
||||
verify.AddFeature(_notSha384ListInput);
|
||||
verify.AddFeature(_sha512ListInput);
|
||||
verify.AddFeature(_notSha512ListInput);
|
||||
verify.AddFeature(_statusListInput);
|
||||
verify.AddFeature(_notStatusListInput);
|
||||
verify.AddFeature(_gameTypeListInput);
|
||||
verify.AddFeature(_notGameTypeListInput);
|
||||
verify.AddFeature(_runnableFlag);
|
||||
verify.AddFeature(_notRunnableFlag);
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using SabreTools.Library.Data;
|
||||
using SabreTools.Library.DatFiles;
|
||||
using SabreTools.Library.Tools;
|
||||
@@ -33,10 +32,13 @@ namespace SabreTools
|
||||
/// <param name="skipFileType">Type of files that should be skipped on scan</param>
|
||||
/// <param name="addBlankFilesForEmptyFolder">True if blank items should be created for empty folders, false otherwise</param>
|
||||
/// <param name="addFileDates">True if dates should be archived for all files, false otherwise</param>
|
||||
/// <param name="filter">Filter object to be passed to the DatItem level</param>
|
||||
/// /* Output DAT info */
|
||||
/// <param name="tempDir">Name of the directory to create a temp folder in (blank is default temp directory)</param>
|
||||
/// <param name="outDir">Name of the directory to output the DAT to (blank is the current directory)</param>
|
||||
/// <param name="copyFiles">True if files should be copied to the temp directory before hashing, false otherwise</param>
|
||||
/// /* Filtering info */
|
||||
/// <param name="filter">Filter object to be passed to the DatItem level</param>
|
||||
private static void InitDatFromDir(List<string> inputs,
|
||||
/* Normal DAT header info */
|
||||
DatHeader datHeader,
|
||||
@@ -53,7 +55,10 @@ namespace SabreTools
|
||||
/* Output DAT info */
|
||||
string tempDir,
|
||||
string outDir,
|
||||
bool copyFiles)
|
||||
bool copyFiles,
|
||||
|
||||
/* Filtering info */
|
||||
Filter filter)
|
||||
{
|
||||
// Create a new DATFromDir object and process the inputs
|
||||
DatFile basedat = new DatFile(datHeader)
|
||||
@@ -71,7 +76,7 @@ namespace SabreTools
|
||||
|
||||
string basePath = Path.GetFullPath(path);
|
||||
bool success = datdata.PopulateFromDir(basePath, omitFromScan, removeDateFromAutomaticName, archivesAsFiles,
|
||||
skipFileType, addBlankFilesForEmptyFolder, addFileDates, tempDir, copyFiles, datHeader.Header, chdsAsFiles);
|
||||
skipFileType, addBlankFilesForEmptyFolder, addFileDates, tempDir, copyFiles, datHeader.Header, chdsAsFiles, filter);
|
||||
|
||||
// If it was a success, write the DAT out
|
||||
if (success)
|
||||
@@ -391,6 +396,7 @@ namespace SabreTools
|
||||
/// <param name="splitType">Type of the split that should be performed (split, merged, fully merged)</param>
|
||||
/// <param name="chdsAsFiles">True if CHDs should be treated like regular files, false otherwise</param>
|
||||
/// <param name="individual">True if DATs should be verified individually, false if they should be done in bulk</param>
|
||||
/// <param name="filter">Filter object to be passed to the DatItem level</param>
|
||||
private static void InitVerify(
|
||||
List<string> datfiles,
|
||||
List<string> inputs,
|
||||
@@ -400,7 +406,8 @@ namespace SabreTools
|
||||
string headerToCheckAgainst,
|
||||
SplitType splitType,
|
||||
bool chdsAsFiles,
|
||||
bool individual)
|
||||
bool individual,
|
||||
Filter filter)
|
||||
{
|
||||
// Get the archive scanning level
|
||||
ArchiveScanLevel asl = Utilities.GetArchiveScanLevelFromNumbers(1, 1, 1, 1);
|
||||
@@ -423,7 +430,7 @@ namespace SabreTools
|
||||
}
|
||||
else
|
||||
{
|
||||
datdata.VerifyGeneric(inputs, hashOnly, quickScan, headerToCheckAgainst, chdsAsFiles);
|
||||
datdata.VerifyGeneric(inputs, hashOnly, quickScan, headerToCheckAgainst, chdsAsFiles, filter);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -448,7 +455,7 @@ namespace SabreTools
|
||||
}
|
||||
else
|
||||
{
|
||||
datdata.VerifyGeneric(inputs, hashOnly, quickScan, headerToCheckAgainst, chdsAsFiles);
|
||||
datdata.VerifyGeneric(inputs, hashOnly, quickScan, headerToCheckAgainst, chdsAsFiles, filter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -862,7 +862,7 @@ namespace SabreTools
|
||||
case "DATFromDir":
|
||||
VerifyInputs(inputs, feature);
|
||||
InitDatFromDir(inputs, datHeader, omitFromScan, noAutomaticDate, archivesAsFiles, chdsAsFiles,
|
||||
skipFileType, addBlankFiles, addFileDates, tempDir, outDir, copyFiles);
|
||||
skipFileType, addBlankFiles, addFileDates, tempDir, outDir, copyFiles, filter);
|
||||
break;
|
||||
// If we're in header extract and remove mode
|
||||
case "Extract":
|
||||
@@ -902,7 +902,7 @@ namespace SabreTools
|
||||
// If we're using the verifier
|
||||
case "Verify":
|
||||
VerifyInputs(inputs, feature);
|
||||
InitVerify(datfiles, inputs, depot, hashOnly, quickScan, datHeader.Header, splitType, chdsAsFiles, individual);
|
||||
InitVerify(datfiles, inputs, depot, hashOnly, quickScan, datHeader.Header, splitType, chdsAsFiles, individual, filter);
|
||||
break;
|
||||
// If nothing is set, show the help
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user