d33f1f3c9b
* First compiling build * fix out path * fix hollow * Traditional loops in favor of linq for clarity * Start refactor * Refactor part 2 * Rename variable * Better error reason handling * Clean up enum * Refactor part 3 * Use combo boxes in favor of updowns * Update tooltips * fix is nested tree view display * Capitialization * Refactor part ?? * remove unused methods * Expanded IsNested Check * TypeFilter class + Fix CLI bug * Remove reflection, change IsDerived and IsNested checks * Remove optional out for IsPublic * Remove nullable from IsPublic * fix logger not resetting color * actually fix it... * remove redundant if else on IsPublic check * Add logging to indicate all types have been filtered out * Default IsPublic to true * remove duplicate method call * Refactor logger to be on its own thread * Multithread remapping and grouped logging for threads * 5 more filters * Finish migrating to the new system * bug fixes * Add empty string validation to text fields * re-enable renamer * restore renamer * Multi threaded renaming, still broken * Basis for method renaming * More renamer work, might get a passing build now? * Re-enable publicizer * Rework logging * re-enable mapping updates * fix hollow * Iterate over all types instead of just one to re-link fields * Add reference list command --------- Co-authored-by: clodan <clodan@clodan.com>
47 lines
1.8 KiB
C#
47 lines
1.8 KiB
C#
using CliFx;
|
|
using CliFx.Attributes;
|
|
using CliFx.Infrastructure;
|
|
using ReCodeIt.ReMapper;
|
|
using ReCodeIt.Utils;
|
|
|
|
namespace ReCodeIt.Commands;
|
|
|
|
[Command("ReMap", Description = "Generates a re-mapped dll provided a mapping file and de-obfuscated dll")]
|
|
public class ReMap : ICommand
|
|
{
|
|
private ReCodeItRemapper _remapper { get; set; } = new();
|
|
|
|
[CommandParameter(0, IsRequired = true, Description = "The absolute path to your mapping.json file, supports .json and .jsonc")]
|
|
public string MappingJsonPath { get; init; }
|
|
|
|
[CommandParameter(1, IsRequired = true, Description = "The absolute path to your de-obfuscated dll, containing all references that it needs to resolve.")]
|
|
public string AssemblyPath { get; init; }
|
|
|
|
[CommandParameter(2, IsRequired = true, Description = "If true, the re-mapper will publicize all types, methods, and properties")]
|
|
public bool Publicize { get; init; }
|
|
|
|
[CommandParameter(3, IsRequired = false, Description = "If true, the re-mapper will rename all changed types associated variable names to be the same as the declaring type")]
|
|
public bool? ReName { get; init; }
|
|
|
|
public ValueTask ExecuteAsync(IConsole console)
|
|
{
|
|
DataProvider.IsCli = true;
|
|
DataProvider.LoadAppSettings();
|
|
|
|
var remapperSettings = DataProvider.Settings.Remapper.MappingSettings;
|
|
|
|
remapperSettings.RenameFields = ReName ?? false;
|
|
remapperSettings.RenameProperties = ReName ?? false;
|
|
remapperSettings.Publicize = Publicize;
|
|
|
|
var remaps = DataProvider.LoadMappingFile(MappingJsonPath);
|
|
|
|
_remapper.InitializeRemap(remaps, AssemblyPath, Path.GetDirectoryName(AssemblyPath));
|
|
|
|
// Wait for log termination
|
|
Logger.Terminate();
|
|
while(Logger.IsRunning()) {}
|
|
|
|
return default;
|
|
}
|
|
} |