protected override void Perform(ModificationInfo info) { foreach (string hash in info.AcceptedHashes) { string cleanAssemblyPath = AssemblyCSharpUtil.FindCleanAssembly(info.TerraTechManaged, hash); if (cleanAssemblyPath != null) { info.CleanAssemblyPath = cleanAssemblyPath; return; } } Error.NoCleanBackup(); }
public static string FindCleanAssembly(string terraTechManagedDir, string expectedHash) { string assemblyCSharpPath = Path.Combine(terraTechManagedDir, "Assembly-CSharp.dll"); string assemblyBackupDir = Path.Combine(terraTechManagedDir, "NuterraBackups"); string assemblyHash = AssemblyCSharpUtil.GetFileHash(assemblyCSharpPath); Console.WriteLine($"Raw assembly hash: `{assemblyHash}`"); if (assemblyHash == expectedHash) { //Current assembly is clean install, make backup return(AssemblyCSharpUtil.CreateAssemblyBackup(assemblyCSharpPath, assemblyBackupDir, assemblyHash)); } else { //Current assembly is dirty, check for backup and otherwise warn string backupPath = AssemblyCSharpUtil.FormatBackupPath(assemblyBackupDir, expectedHash); if (File.Exists(backupPath)) { return(backupPath); } } return(null); }