public WingmanModRecord(WingmanMod mod) { Id = mod.Id; ModInfo = mod.ModInfo; ModInfo.StepsEnabled = null; Metadata = mod.Metadata; Parameters = mod.Parameters; }
private Dictionary <string, List <PatchSet> > RenderFilePatchTemplates(PatchRequest request, WingmanMod mod, Dictionary <string, string> modelVars) { var dict = mod.FilePatches.ToDictionary(k => k.Key, kvp => { var finalPatches = kvp.Value.Where(psList => { // REMEMBER: this is to keep the step, so have to return false to skip it if (mod.ModInfo.StepsEnabled.ContainsKey(psList.Name) && _parser.TryParse(mod.ModInfo.StepsEnabled[psList.Name], out var skipTemplate)) { var rendered = skipTemplate.Render(GetInputContext(request, modelVars)); var result = !bool.TryParse(rendered, out var skip) || skip; // var result = bool.TryParse(rendered, out var skip) || skip; // do NOT invert result: result *is* inverted return(result); } return(true); }).Select(psList => { psList.Patches = psList.Patches.Select(p => { if (_parser.TryParse(p.Substitution, out var subTemplate)) { p.Substitution = subTemplate.Render(GetInputContext(request, modelVars)); } if (_parser.TryParse(p.Template, out var template)) { p.Template = template.Render(GetInputContext(request, modelVars)); } if (p.Window != null) { p.Window.After = SafeRender(request, p.Window.After, modelVars); p.Window.Before = SafeRender(request, p.Window.Before, modelVars); } return(p); }).ToList(); return(psList); }).ToList(); return(finalPatches); });