Beispiel #1
0
        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();
        }
Beispiel #2
0
        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();
                }
            }
        }
Beispiel #3
0
 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;
 }