private List <Option> MergeOptions( EngineOptions configOptions, EngineSpecification specification) { var sortedOptions = new List <Option>(); foreach (var option in specification.OptionsSchema) { var key = option.Key; string value; if (option.Value.Id == "{path}") { value = option.Value.Id; } else { value = configOptions.GetValueOrDefault(key) ?? specification.Schema.Defaults.GetValueOrDefault(key); } if (value != null || (option.Value.Type == "null" && specification.Schema.Defaults.ContainsKey(key))) { sortedOptions.Add(new Option(key, value)); } } return(sortedOptions); }
public InstallResult Install(EngineSpecification specification, string installationPath = null) { var mainPackage = specification.Schema.Requirements.First(x => x.Package == specification.Schema.Name); var result = new InstallResult() { Name = specification.Schema.Name, Packages = new List <InstallResult>(specification.Schema.Requirements .Select(requirement => { var manager = Managers.get(requirement.Manager); if (manager == null) { return(cantInstall(requirement)); } var installCheck = manager.CheckInstallation(requirement.Package, installationPath); var insResult = installCheck.Installed ? installCheck : manager.Install(requirement.Package, installationPath, requirement.Version); return(insResult ?? cantInstall(requirement)); })) }; result.Installed = result.Packages.All((x) => x.Installed); var mainResult = result.Packages.Where(x => x.Name == mainPackage.Package).First(); result.Version = mainResult.Version; result.Message = mainResult.Message; result.Packages.Remove(mainResult); return(result); }
public EngineSpecification(EngineSpecification engineSpecifications) { Capacity = engineSpecifications.Capacity; HorsePowers = engineSpecifications.HorsePowers; FuelType = engineSpecifications.FuelType; }