public int Execute(String inputFilePath, String outputFilePath, RegexFilter craftFilter, RegexFilter partFilter) { ui.DisplayUserMessage($"Searching for crafts matching '{craftFilter}'..."); var kspObjTree = CraftLoader.LoadFromFile(inputFilePath); var crafts = new CraftLookup(kspObjTree).LookupCrafts(craftFilter).ToList(); if (crafts.Count <= 0) { ui.DisplayErrorMessage($"No craft matching '{craftFilter}' found, aborting"); return(-1); } ui.DisplayUserMessage($"Searching for parts matching '{partFilter}'..."); var partsRemoved = crafts.Aggregate(false, (removed, craft) => removed | RemoveMatchingParts(craft, partFilter)); if (!partsRemoved) { ui.DisplayErrorMessage($"No parts removed"); return(-1); } CraftLoader.SaveToFile(outputFilePath, kspObjTree); return(0); }