Renamer changes - improvements

This commit is contained in:
Cj 2024-06-16 03:43:00 -04:00
parent 802bacadce
commit c24a5683cd
5 changed files with 73 additions and 23 deletions

View File

@ -355,12 +355,7 @@ public class ReCodeItAutoMapper
} }
} }
Logger.Log($"-------------------------------RESULT-----------------------------------", ConsoleColor.Yellow);
Logger.Log($"Found {MappingPairs.Count()} automatic remaps", ConsoleColor.Yellow);
Logger.Log($"Renamed {TotalFieldRenameCount} fields", ConsoleColor.Yellow);
Logger.Log($"Renamed {TotalPropertyRenameCount} properties", ConsoleColor.Yellow);
Logger.Log($"Failed to rename: {FailureCount} mapping pairs", ConsoleColor.Yellow);
Logger.Log($"------------------------------------------------------------------------", ConsoleColor.Yellow);
} }
/// <summary> /// <summary>
@ -384,6 +379,15 @@ public class ReCodeItAutoMapper
private void WriteChanges() private void WriteChanges()
{ {
var path = DataProvider.WriteAssemblyDefinition();
Logger.Log($"-------------------------------RESULT-----------------------------------", ConsoleColor.Green);
Logger.Log($"Complete: Assembly written to `{path}`", ConsoleColor.Green);
Logger.Log($"Found {MappingPairs.Count()} automatic remaps", ConsoleColor.Green);
Logger.Log($"Renamed {TotalFieldRenameCount} fields", ConsoleColor.Green);
Logger.Log($"Renamed {TotalPropertyRenameCount} properties", ConsoleColor.Green);
Logger.Log($"Failed to rename: {FailureCount} mapping pairs", ConsoleColor.Green);
Logger.Log($"------------------------------------------------------------------------", ConsoleColor.Green);
} }
/// <summary> /// <summary>

View File

@ -236,20 +236,12 @@ public class ReCodeItRemapper
/// </summary> /// </summary>
private void WriteAssembly() private void WriteAssembly()
{ {
var filename = Path.GetFileNameWithoutExtension(DataProvider.Settings.AppSettings.AssemblyPath); var path = DataProvider.WriteAssemblyDefinition(true);
var strippedPath = Path.GetDirectoryName(filename);
filename = $"{filename}-Remapped.dll";
var remappedPath = Path.Combine(strippedPath, filename);
DataProvider.AssemblyDefinition.Write(remappedPath);
DataProvider.UpdateMapping();
Logger.Log("-----------------------------------------------", ConsoleColor.Green); Logger.Log("-----------------------------------------------", ConsoleColor.Green);
Logger.Log($"Complete: Assembly written to `{remappedPath}`", ConsoleColor.Green); Logger.Log($"Complete: Assembly written to `{path}`", ConsoleColor.Green);
Logger.Log("Original type names updated on mapping file.", ConsoleColor.Green); Logger.Log("Original type names updated on mapping file.", ConsoleColor.Green);
Logger.Log($"Remap took {Stopwatch.Elapsed.TotalSeconds:F0} seconds", ConsoleColor.Green); Logger.Log($"Remap took {Stopwatch.Elapsed.TotalSeconds:F1} seconds", ConsoleColor.Green);
Logger.Log("-----------------------------------------------", ConsoleColor.Green); Logger.Log("-----------------------------------------------", ConsoleColor.Green);
Reset(); Reset();

View File

@ -2,11 +2,14 @@
using Mono.Collections.Generic; using Mono.Collections.Generic;
using ReCodeIt.Models; using ReCodeIt.Models;
using ReCodeIt.Utils; using ReCodeIt.Utils;
using ReCodeItLib.Utils;
namespace ReCodeIt.ReMapper; namespace ReCodeIt.ReMapper;
internal static class RenameHelper internal static class RenameHelper
{ {
private static List<string> TokensToMatch => DataProvider.Settings.AutoMapper.TokensToMatch;
/// <summary> /// <summary>
/// Only used by the manual remapper, should probably be removed /// Only used by the manual remapper, should probably be removed
/// </summary> /// </summary>
@ -52,13 +55,19 @@ internal static class RenameHelper
{ {
foreach (var type in typesToCheck) foreach (var type in typesToCheck)
{ {
var fields = type.Fields
.Where(field => field.Name.IsFieldOrPropNameInList(TokensToMatch));
if (!fields.Any()) { continue; }
int fieldCount = 0; int fieldCount = 0;
foreach (var field in type.Fields) foreach (var field in fields)
{ {
if (field.FieldType.Name == oldTypeName) if (field.FieldType.Name == oldTypeName)
{ {
var newFieldName = GetNewFieldName(newTypeName, field.IsPrivate, fieldCount); var newFieldName = GetNewFieldName(newTypeName, field.IsPrivate, fieldCount);
// Dont need to do extra work
if (field.Name == newFieldName) { continue; } if (field.Name == newFieldName) { continue; }
Logger.Log($"Renaming original field type name: `{field.FieldType.Name}` with name `{field.Name}` to `{newFieldName}`", ConsoleColor.Green); Logger.Log($"Renaming original field type name: `{field.FieldType.Name}` with name `{field.Name}` to `{newFieldName}`", ConsoleColor.Green);
@ -94,16 +103,23 @@ internal static class RenameHelper
{ {
foreach (var type in typesToCheck) foreach (var type in typesToCheck)
{ {
int propertyCount = 0; var properties = type.Properties
.Where(prop => prop.Name.IsFieldOrPropNameInList(TokensToMatch));
foreach (var property in type.Properties) if (!properties.Any()) { continue; }
int propertyCount = 0;
foreach (var property in properties)
{ {
if (property.PropertyType.Name == oldTypeName) if (property.PropertyType.Name == oldTypeName)
{ {
var newName = GetNewPropertyName(newTypeName, propertyCount); var newPropertyName = GetNewPropertyName(newTypeName, propertyCount);
Logger.Log($"Renaming original property type name: `{property.PropertyType.Name}` with name `{property.Name}` to `{newName}`", ConsoleColor.Green); // Dont need to do extra work
property.Name = newName; if (property.Name == newPropertyName) { continue; }
Logger.Log($"Renaming original property type name: `{property.PropertyType.Name}` with name `{property.Name}` to `{newPropertyName}`", ConsoleColor.Green);
property.Name = newPropertyName;
propertyCount++; propertyCount++;
overAllCount++; overAllCount++;
} }

View File

@ -174,4 +174,23 @@ public static class DataProvider
Logger.Log($"Module `{fileName}` not found in assembly {fileName}"); Logger.Log($"Module `{fileName}` not found in assembly {fileName}");
} }
public static string WriteAssemblyDefinition(bool updateMapping = false)
{
var filename = Path.GetFileNameWithoutExtension(Settings.AppSettings.AssemblyPath);
var strippedPath = Path.GetDirectoryName(filename);
filename = $"{filename}-Remapped.dll";
var remappedPath = Path.Combine(strippedPath, filename);
AssemblyDefinition.Write(remappedPath);
if (updateMapping)
{
UpdateMapping();
}
return remappedPath;
}
} }

View File

@ -38,4 +38,23 @@ internal static class StringExtentions
return str; return str;
} }
/// <summary>
/// Does the property or field name exist in a given list, this applies prefixes and handles
/// capitalization.
/// </summary>
/// <param name="str"></param>
/// <param name="list"></param>
/// <returns>True if it in the list</returns>
public static bool IsFieldOrPropNameInList(this string str, List<string> list)
{
if (str.Trim().ElementAt(0) == '_')
{
str = str.Replace("_", "");
}
var result = list.Any(item => str.StartsWith(item, StringComparison.CurrentCultureIgnoreCase));
return result;
}
} }