mirror of
https://github.com/sp-tarkov/assembly-tool.git
synced 2025-02-13 04:50:45 -05:00
53 lines
1.6 KiB
C#
53 lines
1.6 KiB
C#
// Uncomment this to have the application wait for a debugger to attach before running.
|
|
//#define WAIT_FOR_DEBUGGER
|
|
|
|
using System.Diagnostics;
|
|
using CliFx;
|
|
using CliFx.Attributes;
|
|
using CliFx.Infrastructure;
|
|
using ReCodeItLib.Utils;
|
|
using ReCodeItLib.ReMapper;
|
|
|
|
namespace ReCodeItCLI.Commands;
|
|
|
|
[Command("ReMap", Description = "Generates a re-mapped dll provided a mapping file and dll. If the dll is obfuscated, it will automatically de-obfuscate.")]
|
|
public class ReMap : ICommand
|
|
{
|
|
private ReMapper _remapper { get; set; } = new();
|
|
|
|
[CommandParameter(0, IsRequired = true, Description = "The absolute path to your mapping.json file, supports .json and .jsonc")]
|
|
public required string MappingJsonPath { get; init; }
|
|
|
|
[CommandParameter(1, IsRequired = true, Description = "The absolute path to your dll, containing all references that it needs to resolve.")]
|
|
public required string AssemblyPath { get; init; }
|
|
|
|
public ValueTask ExecuteAsync(IConsole console)
|
|
{
|
|
#if WAIT_FOR_DEBUGGER
|
|
Logger.LogSync("Waiting for debugger...");
|
|
while (!Debugger.IsAttached)
|
|
{
|
|
Thread.Sleep(100);
|
|
}
|
|
#endif
|
|
|
|
DataProvider.Settings.MappingPath = MappingJsonPath;
|
|
|
|
var remaps = DataProvider.LoadMappingFile(MappingJsonPath);
|
|
|
|
var outPath = Path.GetDirectoryName(AssemblyPath);
|
|
|
|
if (outPath is null)
|
|
{
|
|
throw new DirectoryNotFoundException("OutPath could not be resolved.");
|
|
}
|
|
|
|
_remapper.InitializeRemap(remaps, AssemblyPath, outPath);
|
|
|
|
// Wait for log termination
|
|
Logger.Terminate();
|
|
while(Logger.IsRunning()) {}
|
|
|
|
return default;
|
|
}
|
|
} |