Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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;
 }