Reduce redundant code

This commit is contained in:
Matt Nadareski
2020-09-18 00:45:08 -07:00
parent 7acadcddd5
commit 4bb768f258
12 changed files with 43 additions and 63 deletions

View File

@@ -64,8 +64,8 @@ have a current entry in the DAT index.";
DatFile df = DatFile.Create(); DatFile df = DatFile.Create();
foreach (string dir in onlyDirs) foreach (string dir in onlyDirs)
{ {
df.PopulateFromDir(dir, asFiles: TreatAsFiles.AaruFormats | TreatAsFiles.CHDs); df.PopulateFromDir(dir, asFiles: TreatAsFile.AaruFormat | TreatAsFile.CHD);
df.PopulateFromDir(dir, asFiles: TreatAsFiles.AaruFormats | TreatAsFiles.Archives | TreatAsFiles.CHDs); df.PopulateFromDir(dir, asFiles: TreatAsFile.AaruFormat | TreatAsFile.Archive | TreatAsFile.CHD);
} }
// Create an empty Dat for files that need to be rebuilt // Create an empty Dat for files that need to be rebuilt
@@ -192,7 +192,7 @@ have a current entry in the DAT index.";
onlyDirs, onlyDirs,
outDir: _depots.Keys.ToList()[0], outDir: _depots.Keys.ToList()[0],
outputFormat: OutputFormat.TorrentGzipRomba, outputFormat: OutputFormat.TorrentGzipRomba,
asFiles: TreatAsFiles.AaruFormats | TreatAsFiles.CHDs); asFiles: TreatAsFile.AaruFormat | TreatAsFile.CHD);
} }
} }
} }

View File

@@ -51,7 +51,7 @@ namespace RombaSharp.Features
DatFile datfile = DatFile.Create(); DatFile datfile = DatFile.Create();
datfile.Header.Name = string.IsNullOrWhiteSpace(name) ? "untitled" : name; datfile.Header.Name = string.IsNullOrWhiteSpace(name) ? "untitled" : name;
datfile.Header.Description = description; datfile.Header.Description = description;
datfile.PopulateFromDir(source, asFiles: TreatAsFiles.AaruFormats | TreatAsFiles.CHDs); datfile.PopulateFromDir(source, asFiles: TreatAsFile.AaruFormat | TreatAsFile.CHD);
datfile.Write(outDir: outdat); datfile.Write(outDir: outdat);
} }
} }

View File

@@ -61,7 +61,7 @@ contents of any changed dats.";
// First get a list of SHA-1's from the input DATs // First get a list of SHA-1's from the input DATs
DatFile datroot = DatFile.Create(); DatFile datroot = DatFile.Create();
datroot.Header.Type = "SuperDAT"; datroot.Header.Type = "SuperDAT";
datroot.PopulateFromDir(_dats, asFiles: TreatAsFiles.AaruFormats | TreatAsFiles.CHDs); datroot.PopulateFromDir(_dats, asFiles: TreatAsFile.AaruFormat | TreatAsFile.CHD);
datroot.Items.BucketBy(Field.DatItem_SHA1, DedupeType.None); datroot.Items.BucketBy(Field.DatItem_SHA1, DedupeType.None);
// Create a List of dat hashes in the database (SHA-1) // Create a List of dat hashes in the database (SHA-1)

View File

@@ -63,7 +63,7 @@ namespace RombaSharp.Features
// Now rescan the depot itself // Now rescan the depot itself
DatFile depot = DatFile.Create(); DatFile depot = DatFile.Create();
depot.PopulateFromDir(depotname, asFiles: TreatAsFiles.AaruFormats | TreatAsFiles.CHDs); depot.PopulateFromDir(depotname, asFiles: TreatAsFile.AaruFormat | TreatAsFile.CHD);
depot.Items.BucketBy(Field.DatItem_SHA1, DedupeType.None); depot.Items.BucketBy(Field.DatItem_SHA1, DedupeType.None);
// Set the base queries to use // Set the base queries to use

View File

@@ -1982,7 +1982,7 @@ namespace SabreTools.Library.DatFiles
public bool PopulateFromDir( public bool PopulateFromDir(
string basePath, string basePath,
Hash omitFromScan = Hash.DeepHashes, Hash omitFromScan = Hash.DeepHashes,
TreatAsFiles asFiles = 0x00, TreatAsFile asFiles = 0x00,
SkipFileType skipFileType = SkipFileType.None, SkipFileType skipFileType = SkipFileType.None,
bool addBlanks = false, bool addBlanks = false,
bool addDate = false, bool addDate = false,
@@ -2075,7 +2075,7 @@ namespace SabreTools.Library.DatFiles
string item, string item,
string basePath, string basePath,
Hash omitFromScan, Hash omitFromScan,
TreatAsFiles asFiles, TreatAsFile asFiles,
SkipFileType skipFileType, SkipFileType skipFileType,
bool addBlanks, bool addBlanks,
bool addDate, bool addDate,
@@ -2093,7 +2093,7 @@ namespace SabreTools.Library.DatFiles
List<BaseFile> extracted = null; List<BaseFile> extracted = null;
// If we have an archive and we're supposed to scan it // If we have an archive and we're supposed to scan it
if (archive != null && !asFiles.HasFlag(TreatAsFiles.Archives)) if (archive != null && !asFiles.HasFlag(TreatAsFile.Archive))
extracted = archive.GetChildren(omitFromScan: omitFromScan, date: addDate); extracted = archive.GetChildren(omitFromScan: omitFromScan, date: addDate);
// If the file should be skipped based on type, do so now // If the file should be skipped based on type, do so now
@@ -2216,7 +2216,7 @@ namespace SabreTools.Library.DatFiles
/// <param name="omitFromScan">Hash flag saying what hashes should not be calculated</param> /// <param name="omitFromScan">Hash flag saying what hashes should not be calculated</param>
/// <param name="addDate">True if dates should be archived for all files, false otherwise</param> /// <param name="addDate">True if dates should be archived for all files, false otherwise</param>
/// <param name="asFiles">TreatAsFiles representing CHD and Archive scanning</param> /// <param name="asFiles">TreatAsFiles representing CHD and Archive scanning</param>
private void ProcessFile(string item, string basePath, Hash omitFromScan, bool addDate, TreatAsFiles asFiles) private void ProcessFile(string item, string basePath, Hash omitFromScan, bool addDate, TreatAsFile asFiles)
{ {
Globals.Logger.Verbose($"'{Path.GetFileName(item)}' treated like a file"); Globals.Logger.Verbose($"'{Path.GetFileName(item)}' treated like a file");
BaseFile baseFile = FileExtensions.GetInfo(item, addDate, Header.HeaderSkipper, asFiles); BaseFile baseFile = FileExtensions.GetInfo(item, addDate, Header.HeaderSkipper, asFiles);
@@ -2508,7 +2508,7 @@ namespace SabreTools.Library.DatFiles
bool delete = false, bool delete = false,
bool inverse = false, bool inverse = false,
OutputFormat outputFormat = OutputFormat.Folder, OutputFormat outputFormat = OutputFormat.Folder,
TreatAsFiles asFiles = 0x00) TreatAsFile asFiles = 0x00)
{ {
#region Perform setup #region Perform setup
@@ -2590,7 +2590,7 @@ namespace SabreTools.Library.DatFiles
bool delete, bool delete,
bool inverse, bool inverse,
OutputFormat outputFormat, OutputFormat outputFormat,
TreatAsFiles asFiles) TreatAsFile asFiles)
{ {
// If we somehow have a null filename, return // If we somehow have a null filename, return
if (file == null) if (file == null)
@@ -2997,7 +2997,7 @@ namespace SabreTools.Library.DatFiles
/// <param name="quickScan">True to enable external scanning of archives, false otherwise</param> /// <param name="quickScan">True to enable external scanning of archives, false otherwise</param>
/// <param name="asFiles">TreatAsFiles representing CHD and Archive scanning</param> /// <param name="asFiles">TreatAsFiles representing CHD and Archive scanning</param>
/// <returns>True if verification was a success, false otherwise</returns> /// <returns>True if verification was a success, false otherwise</returns>
public bool VerifyGeneric(List<string> inputs, bool hashOnly, bool quickScan, TreatAsFiles asFiles = 0x00) public bool VerifyGeneric(List<string> inputs, bool hashOnly, bool quickScan, TreatAsFile asFiles = 0x00)
{ {
bool success = true; bool success = true;

View File

@@ -276,11 +276,12 @@ namespace SabreTools.Library.DatFiles
/// <summary> /// <summary>
/// Determines what sort of files get externally hashed /// Determines what sort of files get externally hashed
/// </summary> /// </summary>
/// TODO: Can FileType be used instead?
[Flags] [Flags]
public enum TreatAsFiles public enum TreatAsFile
{ {
CHDs = 1 << 0, CHD = 1 << 0,
Archives = 1 << 1, Archive = 1 << 1,
AaruFormats = 1 << 2, AaruFormat = 1 << 2,
} }
} }

View File

@@ -343,7 +343,7 @@ namespace SabreTools.Library.IO
/// <param name="header">Populated string representing the name of the skipper to use, a blank string to use the first available checker, null otherwise</param> /// <param name="header">Populated string representing the name of the skipper to use, a blank string to use the first available checker, null otherwise</param>
/// <param name="asFiles">TreatAsFiles representing special format scanning</param> /// <param name="asFiles">TreatAsFiles representing special format scanning</param>
/// <returns>Populated BaseFile object if success, empty one on error</returns> /// <returns>Populated BaseFile object if success, empty one on error</returns>
public static BaseFile GetInfo(string input, bool date = false, string header = null, TreatAsFiles asFiles = 0x00) public static BaseFile GetInfo(string input, bool date = false, string header = null, TreatAsFile asFiles = 0x00)
{ {
// Add safeguard if file doesn't exist // Add safeguard if file doesn't exist
if (!File.Exists(input)) if (!File.Exists(input))
@@ -351,57 +351,36 @@ namespace SabreTools.Library.IO
// Get input information // Get input information
var fileType = input.GetFileType(); var fileType = input.GetFileType();
var inputStream = TryOpenRead(input); Stream inputStream = TryOpenRead(input);
// Get the information from the file stream // Try to match the supplied header skipper
BaseFile baseFile;
if (header != null) if (header != null)
{ {
SkipperRule rule = Transform.GetMatchingRule(input, Path.GetFileNameWithoutExtension(header)); SkipperRule rule = Transform.GetMatchingRule(input, Path.GetFileNameWithoutExtension(header));
// If there's a match, get the new information from the stream // If there's a match, transform the stream before getting info
if (rule.Tests != null && rule.Tests.Count != 0) if (rule.Tests != null && rule.Tests.Count != 0)
{ {
// Create the output stream // Create the output stream
MemoryStream outputStream = new MemoryStream(); MemoryStream outputStream = new MemoryStream();
// Transform the stream and get the information from it // Transform the stream and get the information from it
rule.TransformStream(inputStream, outputStream, keepReadOpen: false, keepWriteOpen: true); rule.TransformStream(inputStream, outputStream, keepReadOpen: false, keepWriteOpen: true);
inputStream = outputStream;
if (fileType == FileType.AaruFormat && !asFiles.HasFlag(TreatAsFiles.AaruFormats))
baseFile = AaruFormat.Create(outputStream);
else if (fileType == FileType.CHD && !asFiles.HasFlag(TreatAsFiles.CHDs))
baseFile = CHDFile.Create(outputStream);
else
baseFile = outputStream.GetInfo(keepReadOpen: false);
// Dispose of the output stream
outputStream.Dispose();
}
// Otherwise, just get the info
else
{
if (fileType == FileType.AaruFormat && !asFiles.HasFlag(TreatAsFiles.AaruFormats))
baseFile = AaruFormat.Create(inputStream);
else if (fileType == FileType.CHD && !asFiles.HasFlag(TreatAsFiles.CHDs))
baseFile = CHDFile.Create(inputStream);
else
baseFile = inputStream.GetInfo(keepReadOpen: false);
} }
} }
// Get the info in the proper manner
BaseFile baseFile;
if (fileType == FileType.AaruFormat && !asFiles.HasFlag(TreatAsFile.AaruFormat))
baseFile = AaruFormat.Create(inputStream);
else if (fileType == FileType.CHD && !asFiles.HasFlag(TreatAsFile.CHD))
baseFile = CHDFile.Create(inputStream);
else else
{ baseFile = inputStream.GetInfo(keepReadOpen: false);
if (fileType == FileType.AaruFormat && !asFiles.HasFlag(TreatAsFiles.AaruFormats))
baseFile = AaruFormat.Create(inputStream);
else if (fileType == FileType.CHD && !asFiles.HasFlag(TreatAsFiles.CHDs))
baseFile = CHDFile.Create(inputStream);
else
baseFile = inputStream.GetInfo(keepReadOpen: false);
}
// Dispose of the input stream // Dispose of the input stream
inputStream.Dispose(); inputStream?.Dispose();
// Add unique data from the file // Add unique data from the file
baseFile.Filename = Path.GetFileName(input); baseFile.Filename = Path.GetFileName(input);

View File

@@ -119,7 +119,7 @@ namespace SabreTools.Library.Skippers
// Now add the information to the database if it's not already there // Now add the information to the database if it's not already there
if (!nostore) if (!nostore)
{ {
BaseFile baseFile = FileExtensions.GetInfo(newfile, asFiles: TreatAsFiles.AaruFormats | TreatAsFiles.CHDs); BaseFile baseFile = FileExtensions.GetInfo(newfile, asFiles: TreatAsFile.AaruFormat | TreatAsFile.CHD);
DatabaseTools.AddHeaderToDatabase(hstr, Utilities.ByteArrayToString(baseFile.SHA1), rule.SourceFile); DatabaseTools.AddHeaderToDatabase(hstr, Utilities.ByteArrayToString(baseFile.SHA1), rule.SourceFile);
} }
@@ -139,7 +139,7 @@ namespace SabreTools.Library.Skippers
Directory.CreateDirectory(outDir); Directory.CreateDirectory(outDir);
// First, get the SHA-1 hash of the file // First, get the SHA-1 hash of the file
BaseFile baseFile = FileExtensions.GetInfo(file, asFiles: TreatAsFiles.AaruFormats | TreatAsFiles.CHDs); BaseFile baseFile = FileExtensions.GetInfo(file, asFiles: TreatAsFile.AaruFormat | TreatAsFile.CHD);
// Retrieve a list of all related headers from the database // Retrieve a list of all related headers from the database
List<string> headers = DatabaseTools.RetrieveHeadersFromDatabase(Utilities.ByteArrayToString(baseFile.SHA1)); List<string> headers = DatabaseTools.RetrieveHeadersFromDatabase(Utilities.ByteArrayToString(baseFile.SHA1));

View File

@@ -2584,15 +2584,15 @@ Some special strings that can be used:
/// <summary> /// <summary>
/// Get TreatAsFiles from feature list /// Get TreatAsFiles from feature list
/// </summary> /// </summary>
protected TreatAsFiles GetTreatAsFiles(Dictionary<string, Library.Help.Feature> features) protected TreatAsFile GetTreatAsFiles(Dictionary<string, Library.Help.Feature> features)
{ {
TreatAsFiles asFiles = 0x00; TreatAsFile asFiles = 0x00;
if (GetBoolean(features, AaruFormatsAsFilesValue)) if (GetBoolean(features, AaruFormatsAsFilesValue))
asFiles |= TreatAsFiles.AaruFormats; asFiles |= TreatAsFile.AaruFormat;
if (GetBoolean(features, ArchivesAsFilesValue)) if (GetBoolean(features, ArchivesAsFilesValue))
asFiles |= TreatAsFiles.Archives; asFiles |= TreatAsFile.Archive;
if (GetBoolean(features, ChdsAsFilesValue)) if (GetBoolean(features, ChdsAsFilesValue))
asFiles |= TreatAsFiles.CHDs; asFiles |= TreatAsFile.CHD;
return asFiles; return asFiles;
} }

View File

@@ -60,7 +60,7 @@ namespace SabreTools.Features
// Get feature flags // Get feature flags
bool addBlankFiles = GetBoolean(features, AddBlankFilesValue); bool addBlankFiles = GetBoolean(features, AddBlankFilesValue);
bool addFileDates = GetBoolean(features, AddDateValue); bool addFileDates = GetBoolean(features, AddDateValue);
TreatAsFiles asFiles = GetTreatAsFiles(features); TreatAsFile asFiles = GetTreatAsFiles(features);
bool copyFiles = GetBoolean(features, CopyFilesValue); bool copyFiles = GetBoolean(features, CopyFilesValue);
bool noAutomaticDate = GetBoolean(features, NoAutomaticDateValue); bool noAutomaticDate = GetBoolean(features, NoAutomaticDateValue);
var omitFromScan = GetOmitFromScan(features); var omitFromScan = GetOmitFromScan(features);

View File

@@ -60,7 +60,7 @@ namespace SabreTools.Features
base.ProcessFeatures(features); base.ProcessFeatures(features);
// Get feature flags // Get feature flags
TreatAsFiles asFiles = GetTreatAsFiles(features); TreatAsFile asFiles = GetTreatAsFiles(features);
bool date = GetBoolean(features, AddDateValue); bool date = GetBoolean(features, AddDateValue);
bool delete = GetBoolean(features, DeleteValue); bool delete = GetBoolean(features, DeleteValue);
bool inverse = GetBoolean(features, InverseValue); bool inverse = GetBoolean(features, InverseValue);

View File

@@ -45,7 +45,7 @@ namespace SabreTools.Features
var datfilePaths = DirectoryExtensions.GetFilesOnly(datfiles); var datfilePaths = DirectoryExtensions.GetFilesOnly(datfiles);
// Get feature flags // Get feature flags
TreatAsFiles asFiles = GetTreatAsFiles(features); TreatAsFile asFiles = GetTreatAsFiles(features);
bool hashOnly = GetBoolean(features, HashOnlyValue); bool hashOnly = GetBoolean(features, HashOnlyValue);
bool quickScan = GetBoolean(features, QuickValue); bool quickScan = GetBoolean(features, QuickValue);
var splitType = GetSplitType(features); var splitType = GetSplitType(features);