예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
 public Option(string name, params string[] alterations)
 {
     this.Name = name;
     GenericEnumerableExtensions.AddRange <string>(this.Alterations, alterations);
 }