public void AddProjectRequest(string name, string template, Action<ProjectRequest> configuration = null) { var request = new ProjectRequest(name, template); if (configuration != null) configuration(request); _projects.Add(request); }
public void Configure(TemplateChoices choices, ProjectRequest request) { choices.Options = choices.Options ?? new string[0]; var option = choices.Selections.Has(Name) ? FindOption(choices.Selections[Name]) : Options.FirstOrDefault(x => choices.Options.Any(o => o.EqualsIgnoreCase(x.Name))) ?? Options.First(); request.Alterations.AddRange(option.Alterations); }
public void SetUp() { theSelection = new OptionSelection{Name = "select"}; theSelection.Options.Add(new Option("a", "a1", "a2")); theSelection.Options.Add(new Option("b", "b1", "b2")); theSelection.Options.Add(new Option("c", "c1", "c2")); theChoices = new TemplateChoices(); theRequest = new ProjectRequest("MyFoo", "baseline"); }
public void copies_project_substitutions() { executePlan(x => { x.AddTemplate("Simple"); var projectRequest = new ProjectRequest("MyProject", "Simple"); projectRequest.Substitutions.Set("something-class", "MyProjectClass"); x.AddProjectRequest(projectRequest); }); thePlan.CurrentProject.Substitutions.ValueFor("something-class") .ShouldEqual("MyProjectClass"); }
public void copy_file_in_project_alteration() { executePlan(x => { x.AddTemplate("Simple"); var projectRequest = new ProjectRequest("MyProject", "Simple"); projectRequest.Alterations.Add("Assets"); x.AddProjectRequest(projectRequest); }); assertFileExists("src", "MyProject", "content", "images", "fake.bmp"); }
public void assembly_reference_in_project() { executePlan(x => { x.AddTemplate("Simple"); var projectRequest = new ProjectRequest("MyProject", "Simple"); x.AddProjectRequest(projectRequest); }); assertFileExists("src", "MyProject", "MyProject.csproj"); var csProjFile = CsProjFile.LoadFrom("integrated".AppendPath("src", "MyProject", "MyProject.csproj")); csProjFile.Find<AssemblyReference>("System.Configuration").ShouldNotBeNull(); // this reference is NOT in the default csProjFile.Find<AssemblyReference>("System.Security").ShouldNotBeNull(); // this reference is NOT in the default }
public ProjectRequest BuildProjectRequest(TemplateChoices choices) { var request = new ProjectRequest(choices.ProjectName, Template); request.Alterations.AddRange(Alterations); if (DotNetVersion.IsNotEmpty()) { request.Version = DotNetVersion; } if (choices.Options != null) { choices.Options.Each(o => { var opt = FindOption(o); if (opt == null) { if (!tryResolveSelection(o, choices)) { if (opt == null) throw new Exception("Unknown option '{0}' for project type {1}".ToFormat(o, Name)); } } else { request.Alterations.AddRange(opt.Alterations); } }); } if (Selections != null) { Selections.Each(selection => selection.Configure(choices, request)); } choices.Inputs.Each((key, value) => request.Substitutions.Set(key, value)); return request; }
public void write_template_plan_preview_smoke_tester() { writePreview(x => { x.AddTemplate("Simple"); var projectRequest = new ProjectRequest("MyProject", "Simple"); projectRequest.Alterations.Add("Assets"); x.AddProjectRequest(projectRequest); }); }
public void AddProjectRequest(ProjectRequest request) { _projects.Add(request); }
public void gitignore_directive_in_project() { executePlan(x => { x.AddTemplate("Simple"); var projectRequest = new ProjectRequest("MyProject", "Simple"); projectRequest.Alterations.Add("FubuBottle"); x.AddProjectRequest(projectRequest); }); readFile(".gitignore").ShouldContain("Gemfile.lock"); }
public void pick_up_AssemblyInfo_transform_from_project_alteration() { executePlan(x => { x.AddTemplate("Simple"); var projectRequest = new ProjectRequest("MyProject", "Simple"); projectRequest.Alterations.Add("FubuBottle"); x.AddProjectRequest(projectRequest); }); var contents = readFile("src", "MyProject", "Properties", "AssemblyInfo.cs"); contents.ShouldContain("using FubuMVC.Core;"); contents.ShouldContain("[assembly: FubuModule]"); }
public void SetUp() { var input = new NewCommandInput { SolutionName = "NewThing", Profile = "web-app", }; TemplateRequest request = input.CreateRequestForSolution(); project = request.Projects.Single(); }
public void execute_with_testing_project() { executePlan(x => { x.AddTemplate("Simple"); var projectRequest = new ProjectRequest("MyProject", "Simple"); x.AddProjectRequest(projectRequest); x.AddTestingRequest(new ProjectRequest("MyProject.Testing", "unit-testing", "MyProject")); }); var csProjFile = CsProjFile.LoadFrom("integrated".AppendPath("src", "MyProject.Testing", "MyProject.Testing.csproj")); csProjFile.All<ProjectReference>().Single() .ProjectName.ShouldEqual("MyProject"); }
public void AddTestingRequest(ProjectRequest request) { _testingProjects.Add(request); }
public void writes_the_saved_template_substitutions_per_project() { executePlan(x => { x.AddTemplate("Simple"); var projectRequest = new ProjectRequest("MyProject", "Simple"); projectRequest.Substitutions.Set("Foo", "Bar"); x.AddProjectRequest(projectRequest); }); assertFileExists("src", "MyProject", Substitutions.ConfigFile); readFile("src", "MyProject", Substitutions.ConfigFile).ShouldContain("Foo=Bar"); }
public void writes_out_ripple_import_file() { executePlan(x => { x.AddTemplate("Simple"); var projectRequest = new ProjectRequest("MyProject", "Simple"); x.AddProjectRequest(projectRequest); }); var contents = readFile(TemplatePlan.RippleImportFile); contents.ShouldContain("MyProject: FubuMVC.Core, RavenDb.Server/2.0.0.0"); }
public void testing_project_adds_a_copy_references_step() { executePlan(x => { x.AddTemplate("Simple"); var projectRequest = new ProjectRequest("MyProject", "Simple"); x.AddProjectRequest(projectRequest); x.AddTestingRequest(new ProjectRequest("MyProject.Testing", "unit-testing", "MyProject")); }); var step = thePlan.Steps.OfType<CopyProjectReferences>().Single(); step.OriginalProject.ShouldEqual("MyProject"); }
public void reads_in_code_files() { executePlan(x => { x.AddTemplate("Simple"); var projectRequest = new ProjectRequest("MyProject", "Simple"); x.AddProjectRequest(projectRequest); }); var csProjFile = CsProjFile.LoadFrom("integrated".AppendPath("src", "MyProject", "MyProject.csproj")); csProjFile.Find<CodeFile>("SomeClass.cs").ShouldNotBeNull(); }
private void buildProjectPlan(TemplatePlan plan, ProjectRequest proj) { var projectPlan = new ProjectPlan(proj.Name) {DotNetVersion = proj.Version ?? DotNetVersion.V40}; plan.Add(projectPlan); proj.Substitutions.CopyTo(projectPlan.Substitutions); var planner = new ProjectPlanner(); if (proj.Template.IsNotEmpty()) { planner.CreatePlan(_library.Find(TemplateType.Project, proj.Template), plan); } _library.Find(TemplateType.Alteration, proj.Alterations) .Each(template => planner.CreatePlan(template, plan)); }
public void copy_project_folders_in_alteration() { executePlan(x => { x.AddTemplate("Simple"); var projectRequest = new ProjectRequest("MyProject", "Simple"); projectRequest.Alterations.Add("Assets"); x.AddProjectRequest(projectRequest); }); assertDirectoryExists("src", "MyProject", "content"); assertDirectoryExists("src", "MyProject", "content", "scripts"); assertDirectoryExists("src", "MyProject", "content", "styles"); assertDirectoryExists("src", "MyProject", "content", "images"); }