public void Configure(TemplateChoices choices, ProjectRequest request) { choices.Options = (choices.Options ?? ((IEnumerable <string>) new string[0])); Option option = choices.Selections.Has(this.Name) ? this.FindOption(choices.Selections[this.Name]) : (this.Options.FirstOrDefault((Option x) => choices.Options.Any((string o) => FubuCore.StringExtensions.EqualsIgnoreCase(o, x.Name))) ?? this.Options.First <Option>()); GenericEnumerableExtensions.AddRange <string>(request.Alterations, option.Alterations); }
public ProjectRequest BuildProjectRequest(TemplateChoices choices) { ProjectRequest request = new ProjectRequest(choices.ProjectName, this.Template); GenericEnumerableExtensions.AddRange <string>(request.Alterations, this.Alterations); if (FubuCore.StringExtensions.IsNotEmpty(this.DotNetVersion)) { request.Version = this.DotNetVersion; } if (choices.Options != null) { GenericEnumerableExtensions.Each <string>(choices.Options, delegate(string o) { Option opt = this.FindOption(o); if (opt == null) { if (!this.tryResolveSelection(o, choices) && opt == null) { throw new Exception(FubuCore.StringExtensions.ToFormat("Unknown option '{0}' for project type {1}", new object[] { o, this.Name })); } } else { GenericEnumerableExtensions.AddRange <string>(request.Alterations, opt.Alterations); } }); } if (this.Selections != null) { GenericEnumerableExtensions.Each <OptionSelection>(this.Selections, delegate(OptionSelection selection) { selection.Configure(choices, request); }); } choices.Inputs.Each(delegate(string key, string value) { request.Substitutions.Set(key, value); }); return(request); }
public static ProjectTemplate BuildProjectTemplate(this XmlElement element) { ProjectTemplate projectTemplate = new ProjectTemplate { Name = element.GetAttribute("name"), Description = element.GetAttribute("description"), Template = element.GetAttribute("template"), DotNetVersion = element.GetAttribute("dotnet") }; if (element.HasAttribute("alterations")) { GenericEnumerableExtensions.AddRange <string>(projectTemplate.Alterations, FubuCore.StringExtensions.ToDelimitedArray(element.GetAttribute("alterations"))); } projectTemplate.Url = element.GetAttribute("url"); projectTemplate.Options = element.ReadOptions(); GenericEnumerableExtensions.AddRange <OptionSelection>(projectTemplate.Selections, element.BuildSelections()); return(projectTemplate); }
public Option(string name, params string[] alterations) { this.Name = name; GenericEnumerableExtensions.AddRange <string>(this.Alterations, alterations); }