public void Alter(TemplatePlan plan) { // Hokey. _substitutions.Set(TemplatePlan.INSTRUCTIONS, plan.GetInstructions()); plan.Logger.StartProject(_alterations.Count); plan.StartProject(this); _substitutions.Trace(plan.Logger); var reference = plan.Solution.FindProject(_projectName); if (reference == null) { if (ProjectTemplateFile.IsEmpty()) { plan.Logger.Trace("Creating project {0} from the default template", _projectName); reference = plan.Solution.AddProject(_projectName); } else { plan.Logger.Trace("Creating project {0} from template at {1}", _projectName, ProjectTemplateFile); reference = plan.Solution.AddProjectFromTemplate(_projectName, ProjectTemplateFile); } reference.Project.AssemblyName = reference.Project.RootNamespace = ProjectName; if (DotNetVersion != null) { reference.Project.DotNetVersion = DotNetVersion; } } var projectDirectory = reference.Project.ProjectDirectory; plan.FileSystem.CreateDirectory(projectDirectory); _relativePath = reference.Project.FileName.PathRelativeTo(plan.Root).Replace("\\", "/"); _substitutions.Set(PROJECT_PATH, _relativePath); _substitutions.Set(PROJECT_FOLDER, _relativePath.Split('/').Reverse().Skip(1).Reverse().Join("/")); _alterations.Each(x => { plan.Logger.TraceAlteration(ApplySubstitutions(x.ToString())); x.Alter(reference.Project, this); }); Substitutions.WriteTo(projectDirectory.AppendPath(Substitutions.ConfigFile)); plan.Logger.EndProject(); }
public void loadTemplate(ProjectTemplateFile projectFile) { ObjectBuilder selected; if (isLoaded(projectFile, out selected)) { Templates.Template = selected; return; } using (System.IO.Stream file = File.Open(projectFile.Name, FileMode.Open)) { if (file != null) { file.Position = 0; System.IO.BinaryReader br = new System.IO.BinaryReader(file); Version v = new Version(); v.deserialize(br); ObjectBuilder newOb = m_templates.newTemplate(""); newOb.deserialize(br); MainWindow mw = MainWindow as MainWindow; mw.TemplateTab.SelectedIndex = m_templates.Templates.Count - 1; selectObjectBuilder(mw.TemplateTab.SelectedIndex); file.Close(); } } }
public bool isLoaded(ProjectTemplateFile projectTemplate, out ObjectBuilder selected) { String name = ""; int index = projectTemplate.Name.LastIndexOf('.'); if (index > 0) name = projectTemplate.Name.Substring(0, index); foreach (ObjectBuilder template in Templates.Templates) { if (template.Name == name) { selected = template; return true; } } selected = null; return false; }