From 1a810d33fbf2505d3fd00f2828e6b9b5d5ff076e Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Mon, 11 Apr 2016 21:33:55 -0700 Subject: [PATCH] Better delimiter matching --- DATFromDir/DATFromDir.cs | 101 ++++++++++++++++++++++++++++++++++----- 1 file changed, 90 insertions(+), 11 deletions(-) diff --git a/DATFromDir/DATFromDir.cs b/DATFromDir/DATFromDir.cs index 1682bd7e..da64c875 100644 --- a/DATFromDir/DATFromDir.cs +++ b/DATFromDir/DATFromDir.cs @@ -21,23 +21,102 @@ namespace SabreTools Old style DATs Set all of the fields in the DAT header Auto set Name and Description from current folder + Version and date from current date */ class DATFromDir { + // Path-related variables private static string _7zPath; private static string _basePath; private static string _tempDir; + + // Extraction and listing related variables + private static char _delim; private static string _baseExtract; private static ProcessStartInfo _psi; private static List> _roms; + // User specified variables + private static bool _remMD5; + private static bool _remSHA1; + private static bool _forceunzip; + private static bool _allfiles; + private static bool _old; + private static string _name; + private static string _desc; + private static string _cat; + + // Other required variables + private static string _version = DateTime.Now.ToString("yyyyMMddHHmmss"); + static void Main(string[] args) { - // Set local paths - _7zPath = Environment.CurrentDirectory.Replace('/', '\\') + "\\7z" + (Environment.Is64BitOperatingSystem ? "\\x64" : "") + "\\"; - _tempDir = Environment.CurrentDirectory.Replace('/', '\\') + "\\temp" + DateTime.Now.ToString("yyyyMMddHHmmss") + "\\"; - _basePath = (args.Length == 0 ? Environment.CurrentDirectory + "\\" : (File.Exists(args[0]) ? args[0] : args[0] + "\\").Replace('/', '\\')); + // First things first, take care of all of the arguments that this could have + _remMD5 = false; _remSHA1 = false; _forceunzip = false; _allfiles = false; _old = false; + _name = ""; _desc = ""; _cat = "SabreTools Dir2DAT"; + List inputs = new List(); + foreach (string arg in args) + { + switch (arg) + { + case "-m": + case "--noMD5": + _remMD5 = true; + break; + case "-s": + case "--noSHA1": + _remSHA1 = true; + break; + case "-u": + case "--unzip": + _forceunzip = true; + break; + case "-f": + case "--files": + _allfiles = true; + break; + case "-o": + case "--old": + _old = true; + break; + default: + if (arg.StartsWith("-n=") || arg.StartsWith("--name=")) + { + _name = arg.Split('=')[1]; + } + else if (arg.StartsWith("-d=") || arg.StartsWith("--desc=")) + { + _desc = arg.Split('=')[1]; + } + else if (arg.StartsWith("-c=") || arg.StartsWith("--cat=")) + { + _cat = arg.Split('=')[1]; + } + else + { + inputs.Add(arg); + } + break; + } + } + + // Determine the deliminator that is to be used + if (Environment.CurrentDirectory.Contains("\\")) + { + _delim = '\\'; + } + else + { + _delim = '/'; + } + + // Set local paths and vars + _7zPath = Environment.CurrentDirectory + _delim + "7z" + (Environment.Is64BitOperatingSystem ? _delim + "x64" : "") + _delim; + _tempDir = Environment.CurrentDirectory + _delim + "temp" + DateTime.Now.ToString("yyyyMMddHHmmss") + _delim; + _basePath = (args.Length == 0 ? Environment.CurrentDirectory + _delim : (File.Exists(args[0]) ? args[0] : args[0] + _delim)); + _name = (_name == "" ? _basePath.Split(_delim).Last() : _name); + _desc = (_desc == "" ? _name + " (" + _version + ")" : _desc); // Set base arguments to be used _baseExtract = "x -o\"" + _tempDir + "\""; @@ -90,20 +169,20 @@ namespace SabreTools // Now write it all out as a DAT try { - FileStream fs = File.Create("dirdat.xml"); + FileStream fs = File.Create(_desc + ".xml"); StreamWriter sw = new StreamWriter(fs, Encoding.UTF8); string header = "\n" + "\n\n" + "\t\n" + "\t\t
\n" + - "\t\t\tdirdat\n" + - "\t\t\tdirdat\n" + + "\t\t\t" + _name + "\n" + + "\t\t\t" + _desc + "\n" + "\t\t\tSabreTools Dir2DAT\n" + - "\t\t\t\n" + - "\t\t\t\n" + + "\t\t\t" + _version + "\n" + + "\t\t\t" + _version + "\n" + "\t\t\tDarksabre76\n" + - "\t\t\t\n" + + "\t\t\t\n" + "\t\t
\n"; // Write the header out @@ -232,7 +311,7 @@ namespace SabreTools fileSHA1 = BitConverter.ToString(sha1.ComputeHash(fs)).Replace("-", ""); } - string actualroot = (item == _basePath ? "Default" : Path.GetDirectoryName(item.Remove(0, _basePath.Length)).Split('\\')[0]); + string actualroot = (item == _basePath ? "Default" : Path.GetDirectoryName(item.Remove(0, _basePath.Length)).Split(_delim)[0]); actualroot = (actualroot == "" ? "Default" : actualroot); string actualitem = (item == _basePath ? item : item.Remove(0, _basePath.Length).Remove(0, (actualroot != "Default" ? actualroot.Length + 1 : 0)));