diff --git a/RombaSharp/Partials/RombaSharp.Help.cs b/RombaSharp/Partials/RombaSharp.Help.cs index dd1b8e25..5611963e 100644 --- a/RombaSharp/Partials/RombaSharp.Help.cs +++ b/RombaSharp/Partials/RombaSharp.Help.cs @@ -116,6 +116,23 @@ namespace RombaSharp FeatureType.Flag, null); + // Create the Merge feature + Feature merge = new Feature( + "merge", + "Merges a depot into the existing one", + FeatureType.Flag, + null); + merge.AddFeature("depot", new Feature( + "-depot", + "Depot path to merge into", + FeatureType.String, + null)); + merge.AddFeature("only-needed", new Feature( + "-only-needed", + "Only merge files in if needed", + FeatureType.Flag, + null)); + // Create the Miss feature Feature miss = new Feature( "miss", @@ -170,6 +187,7 @@ namespace RombaSharp help.Add("Fixdat", fixdat); help.Add("Lookup", lookup); help.Add("Memstats", memstats); + help.Add("Merge", merge); help.Add("Miss", miss); help.Add("Purge Backup", purgeBackup); help.Add("Purge Delete", purgeDelete); diff --git a/RombaSharp/Partials/RombaSharp.Inits.cs b/RombaSharp/Partials/RombaSharp.Inits.cs index 0a791867..7eb345ea 100644 --- a/RombaSharp/Partials/RombaSharp.Inits.cs +++ b/RombaSharp/Partials/RombaSharp.Inits.cs @@ -373,6 +373,17 @@ namespace RombaSharp dbc.Dispose(); } + /// + /// Wrap merging an external depot into an existing one + /// + /// + /// + /// + private static void InitMerge(List inputs, string depotPath, bool onlyNeeded) + { + _logger.User("This feature is not yet implemented: merge"); + } + /// /// Wrap creating a havefile and a missfile for each Dat /// diff --git a/RombaSharp/RombaSharp.cs b/RombaSharp/RombaSharp.cs index c4c89f04..287afbfa 100644 --- a/RombaSharp/RombaSharp.cs +++ b/RombaSharp/RombaSharp.cs @@ -86,6 +86,7 @@ namespace RombaSharp fixdat = false, lookup = false, memstats = false, + merge = false, miss = false, progress = false, purgeBackup = false, @@ -98,7 +99,8 @@ namespace RombaSharp onlyNeeded = false; // User inputs - string newdat ="", + string depotPath = "", + newdat = "", outdat = ""; List inputs = new List(); @@ -150,6 +152,9 @@ namespace RombaSharp case "memstats": memstats = true; break; + case "merge": + merge = true; + break; case "miss": miss = true; break; @@ -179,6 +184,11 @@ namespace RombaSharp break; // User inputs + case "-depot": + case "--depot": + i++; + depotPath = args[i]; + break; case "-new": case "--new": i++; @@ -203,6 +213,11 @@ namespace RombaSharp switch (split[0]) { + case "-depot": + case "--depot": + i++; + depotPath = split[1]; + break; case "-new": case "--new": newdat = split[1]; @@ -226,7 +241,7 @@ namespace RombaSharp // If more than one switch is enabled, show the help screen if (!(archive ^ build ^ dbstats ^ depotRescan ^ diffdat ^ dir2dat ^ export ^ fixdat ^ lookup ^ - memstats ^ miss ^ progress ^ purgeBackup ^ purgeDelete ^ refreshDats ^ shutdown)) + memstats ^ merge ^ miss ^ progress ^ purgeBackup ^ purgeDelete ^ refreshDats ^ shutdown)) { _logger.Error("Only one feature switch is allowed at a time"); _help.OutputGenericHelp(); @@ -235,7 +250,7 @@ namespace RombaSharp } // If a switch that requires a filename is set and no file is, show the help screen - if (inputs.Count == 0 && (archive || build || depotRescan || dir2dat || fixdat || lookup || miss)) + if (inputs.Count == 0 && (archive || build || depotRescan || dir2dat || fixdat || lookup || merge || miss)) { _logger.Error("This feature requires at least one input"); _help.OutputGenericHelp(); @@ -308,6 +323,12 @@ namespace RombaSharp DisplayMemoryStats(); } + // Merges depots + else if (merge) + { + InitMerge(inputs, depotPath, onlyNeeded); + } + // For each specified DAT file it creates a miss file and a have file else if (miss) {