Added IUtilityCommand and move default commands into Mods.Common.
This commit is contained in:
committed by
Paul Chote
parent
ff7b3541f4
commit
08890b0994
@@ -18,36 +18,39 @@ namespace OpenRA.Utility
|
||||
{
|
||||
class Program
|
||||
{
|
||||
static readonly Dictionary<string, Action<string[]>> Actions = new Dictionary<string, Action<string[]>>()
|
||||
{
|
||||
{ "--shp", Command.ConvertPngToShp },
|
||||
{ "--png", Command.ConvertSpriteToPng },
|
||||
{ "--extract", Command.ExtractFiles },
|
||||
{ "--remap", Command.RemapShp },
|
||||
{ "--transpose", Command.TransposeShp },
|
||||
{ "--docs", Command.ExtractTraitDocs },
|
||||
{ "--lua-docs", Command.ExtractLuaDocs },
|
||||
{ "--map-hash", Command.GetMapHash },
|
||||
{ "--map-preview", Command.GenerateMinimap },
|
||||
{ "--upgrade-map", UpgradeRules.UpgradeMap },
|
||||
{ "--upgrade-mod", UpgradeRules.UpgradeMod },
|
||||
{ "--map-import", Command.ImportLegacyMap },
|
||||
{ "--extract-language-strings", ExtractLanguageStrings.FromMod }
|
||||
};
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
if (args.Length == 0) { PrintUsage(); return; }
|
||||
if (args.Length == 0)
|
||||
{
|
||||
PrintUsage(null);
|
||||
return;
|
||||
}
|
||||
|
||||
AppDomain.CurrentDomain.AssemblyResolve += GlobalFileSystem.ResolveAssembly;
|
||||
|
||||
Log.LogPath = Platform.SupportDir + "Logs" + Path.DirectorySeparatorChar;
|
||||
Log.AddChannel("perf", null);
|
||||
|
||||
var modName = args[0];
|
||||
if (!ModMetadata.AllMods.Keys.Contains(modName))
|
||||
{
|
||||
PrintUsage(null);
|
||||
return;
|
||||
}
|
||||
|
||||
var modData = new ModData(modName);
|
||||
args = args.Skip(1).ToArray();
|
||||
var actions = new Dictionary<string, Action<ModData, string[]>>();
|
||||
foreach (var commandType in modData.ObjectCreator.GetTypesImplementing<IUtilityCommand>())
|
||||
{
|
||||
var command = (IUtilityCommand)Activator.CreateInstance(commandType);
|
||||
actions.Add(command.Name, command.Run);
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var action = Exts.WithDefault(_ => PrintUsage(), () => Actions[args[0]]);
|
||||
action(args);
|
||||
var action = Exts.WithDefault((a,b) => PrintUsage(actions), () => actions[args[0]]);
|
||||
action(modData, args);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -60,11 +63,15 @@ namespace OpenRA.Utility
|
||||
}
|
||||
}
|
||||
|
||||
static void PrintUsage()
|
||||
static void PrintUsage(IDictionary<string, Action<ModData, string[]>> actions)
|
||||
{
|
||||
Console.WriteLine("Usage: OpenRA.Utility.exe [OPTION] [ARGS]");
|
||||
Console.WriteLine("Run `OpenRA.Utility.exe [MOD]` to see a list of available commands.");
|
||||
Console.WriteLine("The available mods are: " + string.Join(", ", ModMetadata.AllMods.Keys));
|
||||
Console.WriteLine();
|
||||
foreach (var a in Actions)
|
||||
|
||||
if (actions == null)
|
||||
return;
|
||||
foreach (var a in actions)
|
||||
{
|
||||
var descParts = a.Value.Method.GetCustomAttributes<DescAttribute>(true)
|
||||
.SelectMany(d => d.Lines);
|
||||
|
||||
Reference in New Issue
Block a user