diff --git a/RombaSharp/RombaSharp.cs b/RombaSharp/RombaSharp.cs index f29a86a2..ef69dfbd 100644 --- a/RombaSharp/RombaSharp.cs +++ b/RombaSharp/RombaSharp.cs @@ -67,11 +67,10 @@ namespace SabreTools return; } - // Set all default values + // Feature flags bool help = false, archive = false, build = false, - copy = false, dbstats = false, depotRescan = false, diffdat = false, @@ -81,21 +80,27 @@ namespace SabreTools lookup = false, memstats = false, miss = false, - onlyNeeded = false, progress = false, purgeBackup = false, purgeDelete = false, refreshDats = false, shutdown = false; + + // User flags + bool copy = false, + onlyNeeded = false; + + // User inputs string newdat ="", outdat = ""; List inputs = new List(); // 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]) { + // Feature flags case "-?": case "-h": case "--help": @@ -107,9 +112,6 @@ namespace SabreTools case "build": build = true; break; - case "-copy": - copy = true; - break; case "dbstats": dbstats = true; break; @@ -137,10 +139,6 @@ namespace SabreTools case "miss": miss = true; break; - case "-only-needed": - case "--only-needed": - onlyNeeded = true; - break; case "purge-backup": purgeBackup = true; break; @@ -156,16 +154,53 @@ namespace SabreTools case "shutdown": shutdown = true; break; - default: - string temparg = arg.Replace("\"", "").Replace("file://", ""); - if (temparg.StartsWith("-new=") || temparg.StartsWith("--new=")) + // User flags + case "-copy": + copy = true; + break; + case "-only-needed": + case "--only-needed": + onlyNeeded = true; + break; + + // User inputs + case "-new": + case "--new": + i++; + newdat = args[i]; + break; + case "-out": + case "--out": + i++; + outdat = args[i]; + break; + default: + string temparg = args[i].Replace("\"", "").Replace("file://", ""); + + if (temparg.StartsWith("-") && temparg.Contains("=")) { - newdat = temparg.Split('=')[1]; - } - else if (temparg.StartsWith("-out=") || temparg.StartsWith("--out=")) - { - outdat = temparg.Split('=')[1]; + // Split the argument + string[] split = temparg.Split('='); + if (split[1] == null) + { + split[1] = ""; + } + + switch (split[0]) + { + case "-new": + case "--new": + newdat = split[1]; + break; + case "-out": + case "--out": + outdat = split[i]; + break; + default: + inputs.Add(temparg); + break; + } } else { diff --git a/SabreTools/SabreTools.cs b/SabreTools/SabreTools.cs index d44c3731..3bebd111 100644 --- a/SabreTools/SabreTools.cs +++ b/SabreTools/SabreTools.cs @@ -46,20 +46,18 @@ namespace SabreTools return; } - // Set all default values + // Feature flags bool help = false, - - // Feature flags datFromDir = false, headerer = false, splitByExt = false, splitByHash = false, splitByType = false, stats = false, - update = false, + update = false; - // Other flags - addBlankFilesForEmptyFolder = false, + // User flags + bool addBlankFilesForEmptyFolder = false, addFileDates = false, cleanGameNames = false, copyFiles = false, @@ -86,54 +84,46 @@ namespace SabreTools skip = false, usegame = true; DiffMode diffMode = 0x0; + OutputFormat outputFormat = 0x0; + StatOutputFormat statOutputFormat = StatOutputFormat.None; + + // User inputs int maxParallelism = 4; long sgt = -1, slt = -1, seq = -1; - OutputFormat outputFormat = 0x0; - StatOutputFormat statOutputFormat = StatOutputFormat.None; - - // DAT fields - string + string addext = "", author = null, category = null, comment = null, + crc = "", date = null, description = null, email = null, + exta = null, + extb = null, filename = null, forcemerge = "", forcend = "", forcepack = "", + gamename = "", header = null, homepage = null, - name = null, - rootdir = null, - url = null, - version = null, - - // Filter fields - crc = "", - gamename = "", md5 = "", - romname = "", - romtype = "", - root = "", - sha1 = "", - status = "", - - // Missfile fields - addext = "", + name = null, + outDir = "", postfix = "", prefix = "", repext = "", - - // Misc fields - exta = null, - extb = null, - outDir = "", - - tempDir = ""; + romname = "", + romtype = "", + root = "", + rootdir = null, + sha1 = "", + status = "", + tempDir = "", + url = null, + version = null; List inputs = new List(); // Determine which switches are enabled (with values if necessary) @@ -141,11 +131,39 @@ namespace SabreTools { switch (args[i]) { + // Feature flags case "-?": case "-h": case "--help": help = true; break; + case "-d": + case "--d2d": + case "--dfd": + datFromDir = true; + break; + case "-es": + case "--ext-split": + splitByExt = true; + break; + case "-hd": + case "--headerer": + headerer = true; + break; + case "-hs": + case "--hash-split": + splitByHash = true; + break; + case "-st": + case "--stats": + stats = true; + break; + case "-ts": + case "--type-split": + splitByType = true; + break; + + // User flags case "-ab": case "--add-blank": addBlankFilesForEmptyFolder = true; @@ -154,16 +172,6 @@ namespace SabreTools case "--add-date": addFileDates = true; break; - case "-ae": - case "--add-ext": - i++; - addext = args[i]; - break; - case "-au": - case "--author": - i++; - author = args[i]; - break; case "-b": case "--bare": removeDateFromAutomaticName = true; @@ -176,52 +184,22 @@ namespace SabreTools case "--cascade": diffMode |= DiffMode.Cascade; break; - case "-ca": - case "--category=": - i++; - category = args[i]; - break; case "-cf": case "--copy-files": copyFiles = true; break; - case "-co": - case "--comment": - i++; - comment = args[i]; - break; - case "-crc": - case "--crc": - i++; - crc = args[i]; - break; - case "-csv": - case "--csv": - statOutputFormat = StatOutputFormat.CSV; - break; case "-clean": case "--clean": cleanGameNames = true; break; - case "-d": - case "--d2d": - case "--dfd": - datFromDir = true; - break; - case "-da": - case "--date": - i++; - date = args[i]; + case "-csv": + case "--csv": + statOutputFormat = StatOutputFormat.CSV; break; case "-dd": case "--dedup": dedup = true; break; - case "-de": - case "--desc": - i++; - description = args[i]; - break; case "-di": case "--diff": diffMode |= DiffMode.All; @@ -238,54 +216,10 @@ namespace SabreTools case "--diff-nd": diffMode |= DiffMode.NoDupes; break; - case "-em": - case "--email": - i++; - email = args[i]; - break; - case "-es": - case "--ext-split": - splitByExt = true; - break; - case "-exta": - case "--exta": - i++; - exta = args[i]; - break; - case "-extb": - case "--extb": - i++; - extb = args[i]; - break; case "-f": case "--files": parseArchivesAsFiles = true; break; - case "-fi": - case "--filename": - i++; - filename = args[i]; - break; - case "-fm": - case "--forcemerge": - i++; - forcemerge = args[i]; - break; - case "-fn": - case "--forcend": - i++; - forcend = args[i]; - break; - case "-fp": - case "--forcepack": - i++; - forcepack = args[i]; - break; - case "-gn": - case "--game-name": - i++; - gamename = args[i]; - break; case "-gp": case "--game-prefix": datPrefix = true; @@ -294,74 +228,18 @@ namespace SabreTools case "--gz-files": enableGzip = true; break; - case "-hd": - case "--headerer": - headerer = true; - break; - case "-he": - case "--header": - i++; - header = args[i]; - break; - case "-hp": - case "--homepage": - i++; - homepage = args[i]; - break; - case "-hs": - case "--hash-split": - splitByHash = true; - break; case "-html": case "--html": statOutputFormat = StatOutputFormat.HTML; break; - case "-input": - case "--input": - i++; - if (File.Exists(args[i]) || Directory.Exists(args[i])) - { - inputs.Add(args[i]); - } - 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; case "-ip": case "--inplace": inplace = true; break; - case "-is": - case "--status": - i++; - status = args[i]; - break; case "-m": case "--merge": merge = true; break; - case "-md5": - case "--md5": - i++; - md5 = args[i]; - break; - case "-mt": - case "--mt": - i++; - Int32.TryParse(args[i], out maxParallelism); - break; - case "-n": - case "--name": - i++; - name = args[i]; - break; case "-nc": case "--nodump-col": showNodumpColumn = true; @@ -426,25 +304,10 @@ namespace SabreTools case "--output-tsv": outputFormat |= OutputFormat.TSV; break; - case "-out": - case "--out": - i++; - outDir = args[i]; - break; case "-ox": case "--output-xml": outputFormat |= OutputFormat.Logiqx; break; - case "-post": - case "--postfix": - i++; - postfix = args[i]; - break; - case "-pre": - case "--prefix": - i++; - prefix = args[i]; - break; case "-q": case "--quotes": quotes = true; @@ -457,33 +320,205 @@ namespace SabreTools case "--rev-cascade": diffMode |= DiffMode.ReverseCascade; break; + case "-re": + case "--restore": + restore = true; + break; + case "-rme": + case "--rem-ext": + remext = true; + break; + case "-ro": + case "--romba": + romba = true; + break; + case "-sd": + case "--superdat": + superdat = true; + break; + case "-sf": + case "--skip": + skip = true; + break; + case "-si": + case "--single": + single = true; + break; + case "-sl": + case "--softlist": + softlist = true; + break; + case "-trim": + case "--trim": + trim = true; + break; + case "-tsv": + case "--tsv": + statOutputFormat = StatOutputFormat.TSV; + break; + case "-ud": + case "--update": + update = true; + break; + case "-xof": + case "--exclude-of": + excludeOf = true; + break; + + // User inputs + case "-ae": + case "--add-ext": + i++; + addext = args[i]; + break; + case "-au": + case "--author": + i++; + author = args[i]; + break; + case "-ca": + case "--category=": + i++; + category = args[i]; + break; + case "-co": + case "--comment": + i++; + comment = args[i]; + break; + case "-crc": + case "--crc": + i++; + crc = args[i]; + break; + case "-da": + case "--date": + i++; + date = args[i]; + break; + case "-de": + case "--desc": + i++; + description = args[i]; + break; + case "-em": + case "--email": + i++; + email = args[i]; + break; + case "-exta": + case "--exta": + i++; + exta = args[i]; + break; + case "-extb": + case "--extb": + i++; + extb = args[i]; + break; + case "-fi": + case "--filename": + i++; + filename = args[i]; + break; + case "-fm": + case "--forcemerge": + i++; + forcemerge = args[i]; + break; + case "-fn": + case "--forcend": + i++; + forcend = args[i]; + break; + case "-fp": + case "--forcepack": + i++; + forcepack = args[i]; + break; + case "-gn": + case "--game-name": + i++; + gamename = args[i]; + break; + case "-he": + case "--header": + i++; + header = args[i]; + break; + case "-hp": + case "--homepage": + i++; + homepage = args[i]; + break; + case "-input": + case "--input": + i++; + if (File.Exists(args[i]) || Directory.Exists(args[i])) + { + inputs.Add(args[i]); + } + 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; + case "-is": + case "--status": + i++; + status = args[i]; + break; + case "-md5": + case "--md5": + i++; + md5 = args[i]; + break; + case "-mt": + case "--mt": + i++; + Int32.TryParse(args[i], out maxParallelism); + break; + case "-n": + case "--name": + i++; + name = args[i]; + break; + case "-out": + case "--out": + i++; + outDir = args[i]; + break; + case "-post": + case "--postfix": + i++; + postfix = args[i]; + break; + case "-pre": + case "--prefix": + i++; + prefix = args[i]; + break; case "-rd": case "--root-dir": i++; root = args[i]; break; - case "-re": - case "--restore": - restore = true; - break; case "-rep": case "--rep-ext": i++; repext = args[i]; break; - case "-rme": - case "--rem-ext": - remext = true; - break; case "-rn": case "--rom-name": i++; romname = args[i]; break; - case "-ro": - case "--romba": - romba = true; - break; case "-root": case "--root": i++; @@ -494,19 +529,11 @@ namespace SabreTools i++; romtype = args[i]; break; - case "-sd": - case "--superdat": - superdat = true; - break; case "-seq": case "--equal": i++; seq = GetSizeFromString(args[i]); break; - case "-sf": - case "--skip": - skip = true; - break; case "-sgt": case "--greater": i++; @@ -517,59 +544,27 @@ namespace SabreTools i++; sha1 = args[i]; break; - case "-si": - case "--single": - single = true; - break; - case "-sl": - case "--softlist": - softlist = true; - break; case "-slt": case "--less": i++; slt = GetSizeFromString(args[i]); break; - case "-st": - case "--stats": - stats = true; - break; case "-t": case "--temp": i++; tempDir = args[i]; break; - case "-trim": - case "--trim": - trim = true; - break; - case "-ts": - case "--type-split": - splitByType = true; - break; - case "-tsv": - case "--tsv": - statOutputFormat = StatOutputFormat.TSV; - break; case "-u": case "-url": case "--url": i++; url = args[i]; break; - case "-ud": - case "--update": - update = true; - break; case "-v": case "--version": i++; version = args[i]; break; - case "-xof": - case "--exclude-of": - excludeOf = true; - break; default: string temparg = args[i].Replace("\"", "").Replace("file://", ""); diff --git a/SimpleSort/SimpleSortApp.cs b/SimpleSort/SimpleSortApp.cs index ca04d0dc..dcc8d21f 100644 --- a/SimpleSort/SimpleSortApp.cs +++ b/SimpleSort/SimpleSortApp.cs @@ -40,18 +40,22 @@ namespace SabreTools // Output the title Build.Start("SimpleSort"); - // Set all default values + // Feature flags bool help = false, - convert = false, + simpleSort = true; + + // User flags + bool convert = false, date = false, delete = false, quickScan = false, romba = false, - simpleSort = true, toFolder = false, tgz = false, updateDat = false, verify = false; + + // User inputs int sevenzip = 0, gz = 2, rar = 2, @@ -67,19 +71,18 @@ namespace SabreTools { switch (args[i]) { + // Feature flags case "-?": case "-h": case "--help": help = true; break; - case "-7z": - case "--7z": - i++; - if (!Int32.TryParse(args[i], out sevenzip)) - { - sevenzip = 0; - } + case "-ss": + case "--sort": + simpleSort = true; break; + + // User flags case "-ad": case "--add-date": date = true; @@ -92,6 +95,40 @@ namespace SabreTools case "--delete": delete = true; break; + case "-do": + case "--directory": + toFolder = true; + break; + case "-qs": + case "--quick": + quickScan = true; + break; + case "-r": + case "--romba": + romba = true; + break; + case "-tgz": + case "--tgz": + tgz = true; + break; + case "-ud": + case "--updated-dat": + updateDat = true; + break; + case "-v": + case "--verify": + verify = true; + break; + + // User inputs + case "-7z": + case "--7z": + i++; + if (!Int32.TryParse(args[i], out sevenzip)) + { + sevenzip = 0; + } + break; case "-dat": case "--dat": i++; @@ -105,10 +142,6 @@ namespace SabreTools } datfiles.Add(args[i]); break; - case "-do": - case "--directory": - toFolder = true; - break; case "-gz": case "--gz": i++; @@ -127,14 +160,6 @@ namespace SabreTools i++; outDir = args[i]; break; - case "-qs": - case "--quick": - quickScan = true; - break; - case "-r": - case "--romba": - romba = true; - break; case "-rar": case "--rar": i++; @@ -148,18 +173,6 @@ namespace SabreTools i++; tempDir = args[i]; break; - case "-tgz": - case "--tgz": - tgz = true; - break; - case "-ud": - case "--updated-dat": - updateDat = true; - break; - case "-v": - case "--verify": - verify = true; - break; case "-zip": case "--zip": i++;