internal static void DoStep(PipMod.Step step, Assembly assembly) { var methods = GetStepHandlersFor(assembly, step); if (methods.Count > 0) { Logger.Verbose("{0}: {1}", step.ToString().ToUpper(), assembly.FullName); foreach (var method in methods) { try { Logger.Debug("Invoking step handler in: {0}", method.DeclaringType.FullName); var args = method.GetParameters(); if (args.Length == 1 && typeof(IPipMod).IsAssignableFrom(args[0].ParameterType)) { method.Invoke(null, new object[] { GetModForAssembly(assembly) }); } else if (args.Length == 1 && typeof(Assembly).IsAssignableFrom(args[0].ParameterType)) { method.Invoke(null, new object[] { assembly }); } else { method.Invoke(null, new object[0]); } } catch (Exception ex) { Logger.Error("Failed running {0} for '{1}' at {2}.{3}:", step.ToString().ToUpper(), assembly.FullName, method.DeclaringType.FullName, method.Name); Logger.Log(ex); // ModHadError(mod, step); } } } }
internal static void DoStep(PipMod.Step step) { foreach (var(isPipMod, assembly) in assemblies) { DoStep(step, assembly); } }
private static List <MethodInfo> GetStepHandlersFor(Assembly assembly, PipMod.Step step) { var handlersForAssembly = GetStepHandlersFor(assembly); if (!handlersForAssembly.TryGetValue(step, out var methods)) { methods = new List <MethodInfo>(); handlersForAssembly.Add(step, methods); } return(methods); }
internal static void ModHadError(IPipMod mod, PipMod.Step step) { /* var kmod = GetKMod(mod); * if (kmod.label.distribution_platform != KMod.Label.DistributionPlatform.Dev && kmod.label.distribution_platform != KMod.Label.DistributionPlatform.Local) * { * kmod.status = KMod.Mod.Status.ReinstallPending; * } * Logger.Debug(kmod.status.ToString()); * KMod.Manager.Dialog( * title: STRINGS.UI.FRONTEND.MOD_DIALOGS.STEP_FAILURE.TITLE, * text: string.Format(STRINGS.UI.FRONTEND.MOD_DIALOGS.STEP_FAILURE.MESSAGE, step.ToString().ToUpper(), mod.Name), * confirm_text: global::STRINGS.UI.FRONTEND.MOD_DIALOGS.RESTART.OK, * on_confirm: App.instance.Restart, * cancel_text: global::STRINGS.UI.FRONTEND.MOD_DIALOGS.RESTART.CANCEL, * on_cancel: PLUtil.NOOP, * activateBlackBackground: true * ); */ }
private static List <MethodInfo> GetStepHandlersFor(IPipMod mod, PipMod.Step step) { return(GetStepHandlersFor(mod.GetType().Assembly, step)); }
internal static void DoStep(PipMod.Step step, IPipMod mod) { DoStep(step, mod.GetType().Assembly); }