[SabreTools, SimpleSort] Make a better system for handling flags; add handling of non-= inputs. Thanks EliUmniCk for the suggestion

This commit is contained in:
Matt Nadareski
2016-10-16 15:36:15 -07:00
parent 1efe0a0bff
commit d6cd471999
2 changed files with 524 additions and 199 deletions

View File

@@ -62,15 +62,23 @@ namespace SabreTools
List<string> datfiles = new List<string>();
// Determine which switches are enabled (with values if necessary)
foreach (string arg in args)
for (int i = 0; i < args.Length; i++)
{
switch (arg)
switch (args[i])
{
case "-?":
case "-h":
case "--help":
help = true;
break;
case "-7z":
case "--7z":
i++;
if (!Int32.TryParse(args[i], out sevenzip))
{
sevenzip = 0;
}
break;
case "-ad":
case "--add-date":
date = true;
@@ -83,10 +91,36 @@ namespace SabreTools
case "--delete":
delete = true;
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 "-do":
case "--directory":
toFolder = true;
break;
case "-gz":
case "--gz":
i++;
if (!Int32.TryParse(args[i], out gz))
{
gz = 2;
}
break;
case "-out":
case "--out":
i++;
outDir = args[i];
break;
case "-qs":
case "--quick":
quickScan = true;
@@ -95,6 +129,19 @@ namespace SabreTools
case "--romba":
romba = true;
break;
case "-rar":
case "--rar":
i++;
if (!Int32.TryParse(args[i], out rar))
{
rar = 2;
}
break;
case "-t":
case "--temp":
i++;
tempDir = args[i];
break;
case "-tgz":
case "--tgz":
tgz = true;
@@ -107,56 +154,92 @@ namespace SabreTools
case "--verify":
verify = true;
break;
case "-zip":
case "--zip":
i++;
if (!Int32.TryParse(args[i], out zip))
{
zip = 0;
}
break;
default:
string temparg = arg.Replace("\"", "").Replace("file://", "");
string temparg = args[i].Replace("\"", "").Replace("file://", "");
if (temparg.StartsWith("-7z=") || temparg.StartsWith("--7z="))
if (temparg.StartsWith("-") && temparg.Contains("="))
{
if (!Int32.TryParse(temparg.Split('=')[1], out sevenzip))
// Split the argument
string[] split = temparg.Split('=');
if (split[1] == null)
{
sevenzip = 0;
split[1] = "";
}
}
else if (temparg.StartsWith("-dat=") || temparg.StartsWith("--dat="))
{
string datfile = temparg.Split('=')[1];
if (!File.Exists(datfile))
switch (split[0])
{
logger.Error("DAT must be a valid file: " + datfile);
Console.WriteLine();
Build.Help();
logger.Close();
return;
}
datfiles.Add(datfile);
}
else if (temparg.StartsWith("-gz=") || temparg.StartsWith("--gz="))
{
if (!Int32.TryParse(temparg.Split('=')[1], out gz))
{
gz = 2;
}
}
else if (temparg.StartsWith("-out=") || temparg.StartsWith("--out="))
{
outDir = temparg.Split('=')[1];
}
else if (temparg.StartsWith("-rar=") || temparg.StartsWith("--rar="))
{
if (!Int32.TryParse(temparg.Split('=')[1], out rar))
{
rar = 2;
}
}
else if (temparg.StartsWith("-t=") || temparg.StartsWith("--temp="))
{
tempDir = temparg.Split('=')[1];
}
else if (temparg.StartsWith("-zip=") || temparg.StartsWith("--zip="))
{
if (!Int32.TryParse(temparg.Split('=')[1], out zip))
{
zip = 0;
case "-7z":
case "--7z":
if (!Int32.TryParse(split[1], out sevenzip))
{
sevenzip = 0;
}
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 "-gz":
case "--gz":
if (!Int32.TryParse(split[1], out gz))
{
gz = 2;
}
break;
case "-out":
case "--out":
outDir = split[1];
break;
case "-rar":
case "--rar":
if (!Int32.TryParse(split[1], out rar))
{
rar = 2;
}
break;
case "-t":
case "--temp":
tempDir = 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))
{
inputs.Add(temparg);
}
else
{
logger.Error("Invalid input detected: " + args[i]);
Console.WriteLine();
Build.Help();
Console.WriteLine();
logger.Error("Invalid input detected: " + args[i]);
logger.Close();
return;
}
break;
}
}
else if (File.Exists(temparg) || Directory.Exists(temparg))
@@ -165,11 +248,11 @@ namespace SabreTools
}
else
{
logger.Error("Invalid input detected: " + arg);
logger.Error("Invalid input detected: " + args[i]);
Console.WriteLine();
Build.Help();
Console.WriteLine();
logger.Error("Invalid input detected: " + arg);
logger.Error("Invalid input detected: " + args[i]);
logger.Close();
return;
}