Example #1
0
        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);
        }