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; }
public void CanLookupCraftsFromACraftTreeUsingTheProvidedFilter () { // given var kspObjTree = createTestCraftTree (); var target = new CraftLookup (kspObjTree); // when / then Assert.That (target.LookupCrafts (new RegexFilter ("2")).Select (craft => craft.Name), Is.EqualTo (new[] { "craft2" })); Assert.That (target.LookupCrafts (new RegexFilter ("craft[1-3]")).Select (craft => craft.Name), Is.EqualTo (new[] { "craft1", "craft2", "craft3" })); }
public void CanLookupCraftFromASingleCraftObjectUsingTheProvidedFilter () { // given var kspObject = createTestCraft (); var target = new CraftLookup (kspObject); // when / then Assert.That (target.LookupCrafts (new RegexFilter ("")).Select (craft => craft.Name), Is.EqualTo (new[] { "craft1" })); Assert.That (target.LookupCrafts (new RegexFilter ("craft1")).Select (craft => craft.Name), Is.EqualTo (new[] { "craft1" })); Assert.That (target.LookupCrafts (new RegexFilter ("craft2")), Is.Empty); }
public int Execute (String inputFilePath, RegexFilter craftFilter) { 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.DisplayCraftList (crafts); } return 0; }
public int Execute (String inputFilePath, RegexFilter craftFilter, RegexFilter partFilter) { ui.DisplayUserMessage ($"Searching for crafts matching '{craftFilter}'..."); var kspObjTree = CraftLoader.LoadFromFile (inputFilePath); var crafts = new CraftLookup (kspObjTree).LookupCrafts (craftFilter); ui.DisplayUserMessage ($"Searching for parts matching '{partFilter}'..."); var filteredParts = crafts.ToDictionary (craft => craft, craft => FindParts (craft, partFilter)); if (filteredParts.Any (entry => entry.Value.Count > 0)) { ui.DisplayPartList (filteredParts); } return 0; }