Ejemplo n.º 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);
        }
Ejemplo n.º 2
0
        public void CanLoadAndSaveFromFiles()
        {
            // given / when
            CraftLoader.SaveToFile("test.sfs", new KspObject("GAME")
                                   .AddChild(new KspCraftObject().AddProperty(new KspStringProperty("name", "craft1")))
                                   .AddChild(new KspCraftObject().AddProperty(new KspStringProperty("name", "craft2")))
                                   .AddChild(new KspCraftObject().AddProperty(new KspStringProperty("name", "craft3"))));

            // and when
            var kspObjTree = CraftLoader.LoadFromFile("test.sfs");

            // then
            Assert.That(kspObjTree.Children <KspCraftObject> (recursive: true).Select(craft => craft.Name), Is.EqualTo(new[] { "craft1", "craft2", "craft3" }));
        }