[SabreTools, DatFiles, README] Last few flags to all types

This commit is contained in:
Matt Nadareski
2018-02-24 14:20:17 -08:00
parent 878c3c4c65
commit 9f54a6a37b
15 changed files with 251 additions and 200 deletions

View File

@@ -898,8 +898,7 @@ namespace SabreTools.Library.DatFiles
string state = ""; string state = "";
// Pre-process the item name // Pre-process the item name
rom.Name = CreatePrefixPostfix(rom, true) + (GameName ? Path.Combine(rom.MachineName, rom.Name) : rom.Name) + CreatePrefixPostfix(rom, false); ProcessItemName(rom, true);
rom.Name = rom.Name.Replace("\"", ""); // Quotes are not needed here
switch (rom.Type) switch (rom.Type)
{ {

View File

@@ -587,6 +587,90 @@ namespace SabreTools.Library.DatFiles
_datHeader.Postfix = value; _datHeader.Postfix = value;
} }
} }
public string AddExtension
{
get
{
if (_datHeader == null)
{
_datHeader = new DatHeader();
}
return _datHeader.AddExtension;
}
set
{
if (_datHeader == null)
{
_datHeader = new DatHeader();
}
_datHeader.AddExtension = value;
}
}
public string ReplaceExtension
{
get
{
if (_datHeader == null)
{
_datHeader = new DatHeader();
}
return _datHeader.ReplaceExtension;
}
set
{
if (_datHeader == null)
{
_datHeader = new DatHeader();
}
_datHeader.ReplaceExtension = value;
}
}
public bool RemoveExtension
{
get
{
if (_datHeader == null)
{
_datHeader = new DatHeader();
}
return _datHeader.RemoveExtension;
}
set
{
if (_datHeader == null)
{
_datHeader = new DatHeader();
}
_datHeader.RemoveExtension = value;
}
}
public bool Romba
{
get
{
if (_datHeader == null)
{
_datHeader = new DatHeader();
}
return _datHeader.Romba;
}
set
{
if (_datHeader == null)
{
_datHeader = new DatHeader();
}
_datHeader.Romba = value;
}
}
public bool GameName public bool GameName
{ {
get get
@@ -652,90 +736,6 @@ namespace SabreTools.Library.DatFiles
_datHeader.UseRomName = value; _datHeader.UseRomName = value;
} }
} }
public string ReplaceExtension
{
get
{
if (_datHeader == null)
{
_datHeader = new DatHeader();
}
return _datHeader.ReplaceExtension;
}
set
{
if (_datHeader == null)
{
_datHeader = new DatHeader();
}
_datHeader.ReplaceExtension = value;
}
}
public string AddExtension
{
get
{
if (_datHeader == null)
{
_datHeader = new DatHeader();
}
return _datHeader.AddExtension;
}
set
{
if (_datHeader == null)
{
_datHeader = new DatHeader();
}
_datHeader.AddExtension = value;
}
}
public bool RemoveExtension
{
get
{
if (_datHeader == null)
{
_datHeader = new DatHeader();
}
return _datHeader.RemoveExtension;
}
set
{
if (_datHeader == null)
{
_datHeader = new DatHeader();
}
_datHeader.RemoveExtension = value;
}
}
public bool Romba
{
get
{
if (_datHeader == null)
{
_datHeader = new DatHeader();
}
return _datHeader.Romba;
}
set
{
if (_datHeader == null)
{
_datHeader = new DatHeader();
}
_datHeader.Romba = value;
}
}
// Statistical data related to the DAT // Statistical data related to the DAT
public StatReportFormat ReportFormat public StatReportFormat ReportFormat
@@ -5896,6 +5896,100 @@ namespace SabreTools.Library.DatFiles
return outfile; return outfile;
} }
/// <summary>
/// Process an item and correctly set the item name
/// </summary>
/// <param name="item">DatItem to update</param>
/// <param name="removeQuotes">True if the Quotes flag should be ignored, false otherwise</param>
/// <param name="alwaysRomName">True if the UseRomName should be always on (default), false otherwise</param>
protected void ProcessItemName(DatItem item, bool removeQuotes, bool alwaysRomName = true)
{
string name = item.Name;
// Backup relevant values and set new ones accordingly
bool quotesBackup = Quotes;
bool useRomNameBackup = UseRomName;
if (removeQuotes)
{
Quotes = false;
}
if (alwaysRomName)
{
UseRomName = true;
}
// Create the proper Prefix and Postfix
string pre = CreatePrefixPostfix(item, true);
string post = CreatePrefixPostfix(item, false);
// If we're in Romba mode, take care of that instead
if (Romba)
{
if (item.Type == ItemType.Rom)
{
// We can only write out if there's a SHA-1
if (!String.IsNullOrWhiteSpace(((Rom)item).SHA1))
{
name = ((Rom)item).SHA1.Substring(0, 2)
+ "/" + ((Rom)item).SHA1.Substring(2, 2)
+ "/" + ((Rom)item).SHA1.Substring(4, 2)
+ "/" + ((Rom)item).SHA1.Substring(6, 2)
+ "/" + ((Rom)item).SHA1 + ".gz";
item.Name = pre + name + post;
}
}
else if (item.Type == ItemType.Disk)
{
// We can only write out if there's a SHA-1
if (!String.IsNullOrWhiteSpace(((Disk)item).SHA1))
{
name = ((Disk)item).SHA1.Substring(0, 2)
+ "/" + ((Disk)item).SHA1.Substring(2, 2)
+ "/" + ((Disk)item).SHA1.Substring(4, 2)
+ "/" + ((Disk)item).SHA1.Substring(6, 2)
+ "/" + ((Disk)item).SHA1 + ".gz";
item.Name = pre + name + post;
}
}
return;
}
if (!String.IsNullOrWhiteSpace(ReplaceExtension) || RemoveExtension)
{
if (RemoveExtension)
{
ReplaceExtension = "";
}
string dir = Path.GetDirectoryName(name);
dir = (dir.StartsWith(Path.DirectorySeparatorChar.ToString()) ? dir.Remove(0, 1) : dir);
name = Path.Combine(dir, Path.GetFileNameWithoutExtension(name) + ReplaceExtension);
}
if (!String.IsNullOrWhiteSpace(AddExtension))
{
name += AddExtension;
}
if (UseRomName && GameName)
{
name = Path.Combine(item.MachineName, name);
}
// Now assign back the item name
item.Name = pre + name + post;
// Restore all relevant values
if (removeQuotes)
{
Quotes = quotesBackup;
}
if (alwaysRomName)
{
UseRomName = useRomNameBackup;
}
}
/// <summary> /// <summary>
/// Create a prefix or postfix from inputs /// Create a prefix or postfix from inputs
/// </summary> /// </summary>

View File

@@ -271,8 +271,7 @@ namespace SabreTools.Library.DatFiles
string state = ""; string state = "";
// Pre-process the item name // Pre-process the item name
rom.Name = CreatePrefixPostfix(rom, true) + (GameName ? Path.Combine(rom.MachineName, rom.Name) : rom.Name) + CreatePrefixPostfix(rom, false); ProcessItemName(rom, true);
rom.Name = rom.Name.Replace("\"", ""); // Quotes are not needed here
switch (rom.Type) switch (rom.Type)
{ {

View File

@@ -201,8 +201,7 @@ namespace SabreTools.Library.DatFiles
string state = ""; string state = "";
// Pre-process the item name // Pre-process the item name
rom.Name = CreatePrefixPostfix(rom, true) + (GameName ? Path.Combine(rom.MachineName, rom.Name) : rom.Name) + CreatePrefixPostfix(rom, false); ProcessItemName(rom, true);
rom.Name = rom.Name.Replace("\"", ""); // Quotes are not needed here
switch (_hash) switch (_hash)
{ {

View File

@@ -410,8 +410,7 @@ namespace SabreTools.Library.DatFiles
string state = ""; string state = "";
// Pre-process the item name // Pre-process the item name
rom.Name = CreatePrefixPostfix(rom, true) + (GameName ? Path.Combine(rom.MachineName, rom.Name) : rom.Name) + CreatePrefixPostfix(rom, false); ProcessItemName(rom, true);
rom.Name = rom.Name.Replace("\"", ""); // Quotes are not needed here
switch (rom.Type) switch (rom.Type)
{ {

View File

@@ -783,8 +783,7 @@ namespace SabreTools.Library.DatFiles
string state = ""; string state = "";
// Pre-process the item name // Pre-process the item name
rom.Name = CreatePrefixPostfix(rom, true) + (GameName ? Path.Combine(rom.MachineName, rom.Name) : rom.Name) + CreatePrefixPostfix(rom, false); ProcessItemName(rom, true);
rom.Name = rom.Name.Replace("\"", ""); // Quotes are not needed here
switch (rom.Type) switch (rom.Type)
{ {

View File

@@ -892,8 +892,7 @@ namespace SabreTools.Library.DatFiles
string state = ""; string state = "";
// Pre-process the item name // Pre-process the item name
rom.Name = CreatePrefixPostfix(rom, true) + (GameName ? Path.Combine(rom.MachineName, rom.Name) : rom.Name) + CreatePrefixPostfix(rom, false); ProcessItemName(rom, true);
rom.Name = rom.Name.Replace("\"", ""); // Quotes are not needed here
switch (rom.Type) switch (rom.Type)
{ {

View File

@@ -154,74 +154,27 @@ namespace SabreTools.Library.DatFiles
try try
{ {
string state = "", name = "", pre = "", post = ""; string state = "";
pre = CreatePrefixPostfix(rom, true); // Process the item name
post = CreatePrefixPostfix(rom, false); ProcessItemName(rom, false, alwaysRomName: false);
// If we're in Romba mode, the state is consistent // If we're in Romba mode, the state is consistent
if (Romba) if (Romba)
{ {
if (rom.Type == ItemType.Rom) state += rom.Name + "\n";
{
// We can only write out if there's a SHA-1
if (!String.IsNullOrWhiteSpace(((Rom)rom).SHA1))
{
name = ((Rom)rom).SHA1.Substring(0, 2)
+ "/" + ((Rom)rom).SHA1.Substring(2, 2)
+ "/" + ((Rom)rom).SHA1.Substring(4, 2)
+ "/" + ((Rom)rom).SHA1.Substring(6, 2)
+ "/" + ((Rom)rom).SHA1 + ".gz";
state += pre + name + post + "\n";
}
}
else if (rom.Type == ItemType.Disk)
{
// We can only write out if there's a SHA-1
if (!String.IsNullOrWhiteSpace(((Disk)rom).SHA1))
{
name = ((Disk)rom).SHA1.Substring(0, 2)
+ "/" + ((Disk)rom).SHA1.Substring(2, 2)
+ "/" + ((Disk)rom).SHA1.Substring(4, 2)
+ "/" + ((Disk)rom).SHA1.Substring(6, 2)
+ "/" + ((Disk)rom).SHA1 + ".gz";
state += pre + name + post + "\n";
}
}
} }
// Otherwise, use any flags // Otherwise, use any flags
else else
{ {
name = (UseRomName ? rom.Name : rom.MachineName);
if (!String.IsNullOrWhiteSpace(ReplaceExtension) || RemoveExtension)
{
if (RemoveExtension)
{
ReplaceExtension = "";
}
string dir = Path.GetDirectoryName(name);
dir = (dir.StartsWith(Path.DirectorySeparatorChar.ToString()) ? dir.Remove(0, 1) : dir);
name = Path.Combine(dir, Path.GetFileNameWithoutExtension(name) + ReplaceExtension);
}
if (!String.IsNullOrWhiteSpace(AddExtension))
{
name += AddExtension;
}
if (UseRomName && GameName)
{
name = Path.Combine(rom.MachineName, name);
}
if (!UseRomName && rom.MachineName != lastgame) if (!UseRomName && rom.MachineName != lastgame)
{ {
state += pre + name + post + "\n"; state += rom.Name + "\n";
lastgame = rom.MachineName; lastgame = rom.MachineName;
} }
else if (UseRomName) else if (UseRomName)
{ {
state += pre + name + post + "\n"; state += rom.Name + "\n";
} }
} }

View File

@@ -956,8 +956,7 @@ namespace SabreTools.Library.DatFiles
string state = ""; string state = "";
// Pre-process the item name // Pre-process the item name
rom.Name = CreatePrefixPostfix(rom, true) + (GameName ? Path.Combine(rom.MachineName, rom.Name) : rom.Name) + CreatePrefixPostfix(rom, false); ProcessItemName(rom, true);
rom.Name = rom.Name.Replace("\"", ""); // Quotes are not needed here
state += "\t\t<game>\n" state += "\t\t<game>\n"
+ "\t\t\t<imageNumber>1</imageNumber>\n" + "\t\t\t<imageNumber>1</imageNumber>\n"

View File

@@ -341,8 +341,7 @@ namespace SabreTools.Library.DatFiles
string state = ""; string state = "";
// Pre-process the item name // Pre-process the item name
rom.Name = CreatePrefixPostfix(rom, true) + (GameName ? Path.Combine(rom.MachineName, rom.Name) : rom.Name) + CreatePrefixPostfix(rom, false); ProcessItemName(rom, true);
rom.Name = rom.Name.Replace("\"", ""); // Quotes are not needed here
if (rom.Type == ItemType.Rom) if (rom.Type == ItemType.Rom)
{ {

View File

@@ -831,8 +831,7 @@ namespace SabreTools.Library.DatFiles
string state = "", prefix = ""; string state = "", prefix = "";
// Pre-process the item name // Pre-process the item name
rom.Name = CreatePrefixPostfix(rom, true) + (GameName ? Path.Combine(rom.MachineName, rom.Name) : rom.Name) + CreatePrefixPostfix(rom, false); ProcessItemName(rom, true);
rom.Name = rom.Name.Replace("\"", ""); // Quotes are not needed here
for (int i = 0; i < depth; i++) for (int i = 0; i < depth; i++)
{ {

View File

@@ -450,7 +450,21 @@ namespace SabreTools.Library.DatFiles
try try
{ {
string state = "", pre = "", post = ""; // Initialize all strings
string state = "",
pre = "",
post = "",
type = "",
romname = "",
diskname = "",
size = "",
crc = "",
md5 = "",
sha1 = "",
sha256 = "",
sha384 = "",
sha512 = "",
status = "";
// Separated values should only output Rom and Disk // Separated values should only output Rom and Disk
if (rom.Type != ItemType.Disk && rom.Type != ItemType.Rom) if (rom.Type != ItemType.Disk && rom.Type != ItemType.Rom)
@@ -458,50 +472,51 @@ namespace SabreTools.Library.DatFiles
return true; return true;
} }
pre = CreatePrefixPostfix(rom, true);
post = CreatePrefixPostfix(rom, false);
if (rom.Type == ItemType.Rom) if (rom.Type == ItemType.Rom)
{ {
string inline = string.Format("\"" + FileName + "\"" type = "rom";
+ "{0}\"" + Name + "\"" romname = rom.Name;
+ "{0}\"" + Description + "\"" size = ((Rom)rom).Size.ToString();
+ "{0}\"" + rom.MachineName + "\"" crc = ((Rom)rom).CRC;
+ "{0}\"" + rom.MachineDescription + "\"" md5 = ((Rom)rom).MD5;
+ "{0}" + "\"rom\"" sha1 = ((Rom)rom).SHA1;
+ "{0}\"" + rom.Name + "\"" sha256 = ((Rom)rom).SHA256;
+ "{0}" + "\"\"" sha384 = ((Rom)rom).SHA384;
+ "{0}\"" + ((Rom)rom).Size + "\"" sha512 = ((Rom)rom).SHA512;
+ "{0}\"" + ((Rom)rom).CRC + "\"" status = (((Rom)rom).ItemStatus != ItemStatus.None ? "\"" + ((Rom)rom).ItemStatus.ToString() + "\"" : "\"\"");
+ "{0}\"" + ((Rom)rom).MD5 + "\""
+ "{0}\"" + ((Rom)rom).SHA1 + "\""
+ "{0}\"" + ((Rom)rom).SHA256 + "\""
// + "{0}\"" + ((Rom)rom).SHA384 + "\""
// + "{0}\"" + ((Rom)rom).SHA512 + "\""
+ "{0}" + (((Rom)rom).ItemStatus != ItemStatus.None ? "\"" + ((Rom)rom).ItemStatus.ToString() + "\"" : "\"\""), _delim);
state += pre + inline + post + "\n";
} }
else if (rom.Type == ItemType.Disk) else if (rom.Type == ItemType.Disk)
{ {
string inline = string.Format("\"" + FileName + "\"" type = "disk";
+ "{0}\"" + Name + "\"" diskname = rom.Name;
+ "{0}\"" + Description + "\"" md5 = ((Disk)rom).MD5;
+ "{0}\"" + rom.MachineName + "\"" sha1 = ((Disk)rom).SHA1;
+ "{0}\"" + rom.MachineDescription + "\"" sha256 = ((Disk)rom).SHA256;
+ "{0}" + "\"disk\"" sha384 = ((Disk)rom).SHA384;
+ "{0}" + "\"\"" sha512 = ((Disk)rom).SHA512;
+ "{0}\"" + rom.Name + "\"" status = (((Disk)rom).ItemStatus != ItemStatus.None ? "\"" + ((Disk)rom).ItemStatus.ToString() + "\"" : "\"\"");
+ "{0}" + "\"\""
+ "{0}" + "\"\""
+ "{0}\"" + ((Disk)rom).MD5 + "\""
+ "{0}\"" + ((Disk)rom).SHA1 + "\""
+ "{0}\"" + ((Disk)rom).SHA256 + "\""
// + "{0}\"" + ((Rom)rom).SHA384 + "\""
// + "{0}\"" + ((Rom)rom).SHA512 + "\""
+ "{0}" + (((Disk)rom).ItemStatus != ItemStatus.None ? "\"" + ((Disk)rom).ItemStatus.ToString() + "\"" : "\"\""), _delim);
state += pre + inline + post + "\n";
} }
pre = CreatePrefixPostfix(rom, true);
post = CreatePrefixPostfix(rom, false);
string inline = string.Format("\"" + FileName + "\""
+ "{0}\"" + Name + "\""
+ "{0}\"" + Description + "\""
+ "{0}\"" + rom.MachineName + "\""
+ "{0}\"" + rom.MachineDescription + "\""
+ "{0}\"" + type + "\""
+ "{0}\"" + romname + "\""
+ "{0}\"" + diskname + "\""
+ "{0}\"" + size + "\""
+ "{0}\"" + crc + "\""
+ "{0}\"" + md5 + "\""
+ "{0}\"" + sha1 + "\""
+ "{0}\"" + sha256 + "\""
// + "{0}\"" + sha384 + "\""
// + "{0}\"" + sha512 + "\""
+ "{0}" + status, _delim);
state += pre + inline + post + "\n";
sw.Write(state); sw.Write(state);
sw.Flush(); sw.Flush();
} }

View File

@@ -787,8 +787,7 @@ namespace SabreTools.Library.DatFiles
string state = ""; string state = "";
// Pre-process the item name // Pre-process the item name
rom.Name = CreatePrefixPostfix(rom, true) + (GameName ? Path.Combine(rom.MachineName, rom.Name) : rom.Name) + CreatePrefixPostfix(rom, false); ProcessItemName(rom, true);
rom.Name = rom.Name.Replace("\"", ""); // Quotes are not needed here
state += "\t\t<part name=\"" + rom.PartName + "\" interface=\"" + rom.PartInterface + "\">\n"; state += "\t\t<part name=\"" + rom.PartName + "\" interface=\"" + rom.PartInterface + "\">\n";

View File

@@ -742,10 +742,9 @@ Options:
-rep, --replace-extension Replace all extensions with specified -rep, --replace-extension Replace all extensions with specified
When an extension exists, replace it with the provided instead. When an extension exists, replace it with the provided instead.
[Missfile only]
-rme, --remove-extensions Remove all extensions from all items -rme, --remove-extensions Remove all extensions from all items
For each item, remove the extension. [Missfile only] For each item, remove the extension.
-ro, --romba Treat like a Romba depot (requires SHA-1) -ro, --romba Treat like a Romba depot (requires SHA-1)
This flag allows reading and writing of DATs and output files to This flag allows reading and writing of DATs and output files to

View File

@@ -858,7 +858,7 @@ namespace SabreTools
new List<string>() { "-rme", "--remove-extensions" }, new List<string>() { "-rme", "--remove-extensions" },
"Remove all extensions from all items", "Remove all extensions from all items",
FeatureType.Flag, FeatureType.Flag,
longDescription: "For each item, remove the extension. [Missfile only]"); longDescription: "For each item, remove the extension.");
} }
} }
private static Feature removeMd5Flag private static Feature removeMd5Flag
@@ -1877,7 +1877,7 @@ Possible values are: None, Good, BadDump, Nodump, Verified");
new List<string>() { "-ae", "--add-extension" }, new List<string>() { "-ae", "--add-extension" },
"Add an extension to each item", "Add an extension to each item",
FeatureType.String, FeatureType.String,
longDescription: "Add a postfix extension to each full item name. [Missfile only]"); longDescription: "Add a postfix extension to each full item name.");
} }
} }
private static Feature authorStringInput private static Feature authorStringInput
@@ -2147,7 +2147,7 @@ Some special strings that can be used:
new List<string>() { "-rep", "--replace-extension" }, new List<string>() { "-rep", "--replace-extension" },
"Replace all extensions with specified", "Replace all extensions with specified",
FeatureType.String, FeatureType.String,
longDescription: "When an extension exists, replace it with the provided instead. [Missfile only]"); longDescription: "When an extension exists, replace it with the provided instead.");
} }
} }
private static Feature rootStringInput private static Feature rootStringInput