// TODO -- recipe selection / filtering public IEnumerable <HostManifest> Read() { var environment = EnvironmentSettings.ReadFrom(_settings.EnvironmentFile); environment.SetRoot(_settings.TargetDirectory); var recipes = RecipeReader.ReadRecipes(_settings.RecipesDirectory, environment); recipes = _sorter.Order(recipes); // TODO -- throw up if no recipes //REVIEW: hardening if (recipes == null || !recipes.Any()) { return(new HostManifest[0]); } //hardening var firstRecipe = recipes.First(); recipes.Skip(1).Each(firstRecipe.AppendBehind); var hosts = firstRecipe.Hosts; addEnvironmentSettingsToHosts(environment, hosts); return(hosts); }