diff --git a/SabreTools.Helper/Tools/ArchiveTools.cs b/SabreTools.Helper/Tools/ArchiveTools.cs index b4c39d71..3f606665 100644 --- a/SabreTools.Helper/Tools/ArchiveTools.cs +++ b/SabreTools.Helper/Tools/ArchiveTools.cs @@ -596,9 +596,10 @@ namespace SabreTools.Helper /// /// File to write from /// Directory to write archive to + /// True if files should be output in Romba depot folders, false otherwise /// Logger object for file and console output /// True if the write was a success, false otherwise - public static bool WriteTorrentGZ(string input, string outdir, Logger logger) + public static bool WriteTorrentGZ(string input, string outdir, bool romba, Logger logger) { // Check that the input file exists if (!File.Exists(input)) @@ -668,6 +669,19 @@ namespace SabreTools.Helper } } + // If we're in romba mode, create the subfolder and move the file + if (romba) + { + string subfolder = Path.Combine(rom.SHA1.Substring(0, 2), rom.SHA1.Substring(2, 2), rom.SHA1.Substring(4, 2), rom.SHA1.Substring(6, 2)); + outdir = Path.Combine(outdir, subfolder); + if (!Directory.Exists(outdir)) + { + Directory.CreateDirectory(outdir); + } + + File.Move(input, Path.Combine(outdir, input)); + } + return true; } diff --git a/TGZTest/TGZTest.cs b/TGZTest/TGZTest.cs index 18454642..c99a36da 100644 --- a/TGZTest/TGZTest.cs +++ b/TGZTest/TGZTest.cs @@ -11,6 +11,7 @@ namespace SabreTools private List _inputs; private string _outdir; private bool _delete; + private bool _romba; private Logger _logger; /// @@ -19,12 +20,14 @@ namespace SabreTools /// List of all inputted files and folders /// Output directory (empty for default directory) /// True if input files should be deleted, false otherwise + /// True if files should be output in Romba depot folders, false otherwise /// Logger object for file and console output - public TGZTest(List inputs, string outdir, bool delete, Logger logger) + public TGZTest(List inputs, string outdir, bool delete, bool romba, Logger logger) { _inputs = inputs; _outdir = (String.IsNullOrEmpty(outdir) ? "tgz" : outdir); _delete = delete; + _romba = romba; _logger = logger; } @@ -65,6 +68,7 @@ namespace SabreTools // Set all default values bool help = false, delete = false, + romba = false, tgz = true; string outdir = ""; List inputs = new List(); @@ -85,6 +89,10 @@ namespace SabreTools case "--delete": delete = true; break; + case "-r": + case "--romba": + romba = true; + break; default: if (temparg.StartsWith("-out=") || temparg.StartsWith("--out=")) { @@ -126,7 +134,7 @@ namespace SabreTools // If we are doing a simple sort if (tgz) { - InitTGZTest(inputs, outdir, delete, logger); + InitTGZTest(inputs, outdir, delete, romba, logger); } // If nothing is set, show the help @@ -145,8 +153,9 @@ namespace SabreTools /// List of all inputted files and folders /// Output directory (empty for default directory) /// True if input files should be deleted, false otherwise + /// True if files should be output in Romba depot folders, false otherwise /// Logger object for file and console output - public static bool InitTGZTest(List inputs, string outdir, bool delete, Logger logger) + public static bool InitTGZTest(List inputs, string outdir, bool delete, bool romba, Logger logger) { // Get all individual files from the inputs List newinputs = new List(); @@ -165,7 +174,7 @@ namespace SabreTools } } - TGZTest tgztest = new TGZTest(newinputs, outdir, delete, logger); + TGZTest tgztest = new TGZTest(newinputs, outdir, delete, romba, logger); return tgztest.Process(); } @@ -177,7 +186,7 @@ namespace SabreTools { foreach (string input in _inputs) { - ArchiveTools.WriteTorrentGZ(input, _outdir, _logger); + ArchiveTools.WriteTorrentGZ(input, _outdir, _romba, _logger); if (_delete) { try