private FileInfo CreateProjectFile(DirectoryInfo root, SolutionModel model)
        {
            string projectRoot   = string.Format("{0}/{1}/", root.FullName, model.ProjectName);
            var    directoryInfo = new DirectoryInfo(projectRoot);

            if (!directoryInfo.Exists)
            {
                directoryInfo.Create();
            }

            var projectModel = new ProjectModel(model.TestProjectGuid)
            {
                ProjectAssemblyName  = model.ProjectAssemblyName,
                ProjectName          = model.ProjectName,
                ProjectRootNameSpace = model.ProjectRootNameSpace,
                TargetFramework      = model.TargetFramework,
                ReleaseOutputPath    = string.Format("../../output/Release/{0}", model.ProjectName),
                DebugOutputPath      = string.Format("../../output/Debug/{0}", model.ProjectName),
                ProjectType          = model.ProjectType
            };

            projectModel.ProjectOutputType = projectModel.ProjectTypeToProjectOutputType(model.ProjectType);
            projectModel.AddCoreReferences();

            var projectFile = new FileInfo(projectRoot + projectModel.ProjectName + ".csproj");

            File.WriteAllText(projectFile.FullName, TemplateRenderer.Render(ProjectTemplate, projectModel));

            return(projectFile);
        }
        private FileInfo[] CreateSolutionAssets(DirectoryInfo root, SolutionModel model)
        {
            var files = new List <FileInfo>();

            FileInfo solutionFile;

            if (model.IncludeGitAttribute)
            {
                solutionFile = new FileInfo(string.Format("{0}/.gitattributes", root.FullName));
                File.WriteAllText(solutionFile.FullName, TemplateRenderer.Render(GitAttributeTemplate, model));
                files.Add(solutionFile);
            }
            if (model.IncludeGitIgnore)
            {
                solutionFile = new FileInfo(string.Format("{0}/.gitignore", root.FullName));
                File.WriteAllText(solutionFile.FullName, TemplateRenderer.Render(GitIgnoreTemplate, model));
                files.Add(solutionFile);
            }
            if (model.IncludeReadme)
            {
                solutionFile = new FileInfo(string.Format("{0}/README.md", root.FullName));
                File.WriteAllText(solutionFile.FullName, TemplateRenderer.RenderAndRenderContent(ReadmeTemplate, model));
                files.Add(solutionFile);
            }
            if (model.IncludeLicense)
            {
                solutionFile = new FileInfo(string.Format("{0}/License.txt", root.FullName));
                File.WriteAllText(solutionFile.FullName, TemplateRenderer.Render(LicenseTemplate, model));
                files.Add(solutionFile);
            }
            return(files.ToArray());
        }
        private FileInfo CreateSolutionFile(DirectoryInfo root, SolutionModel model)
        {
            var templateToRender = model.IncludeTestProject ? SolutionWithTestTemplate : SolutionTemplate;
            var solutionFile     = new FileInfo(string.Format("{0}{1}.sln", root.FullName, model.SolutionName));

            File.WriteAllText(solutionFile.FullName, TemplateRenderer.Render(templateToRender, model));

            return(solutionFile);
        }
        private FileInfo[] CreateProjectAssets(DirectoryInfo root, SolutionModel model)
        {
            var files = new List <FileInfo>();

            FileInfo solutionFile;

            if (model.IncludeResharper)
            {
                solutionFile = new FileInfo(string.Format("{0}/resharper.settings", root.FullName));
                File.WriteAllText(solutionFile.FullName, TemplateRenderer.Render(ResharperSettingsTemplate, model));
                files.Add(solutionFile);
            }
            if (model.IncludeStylecop)
            {
                solutionFile = new FileInfo(string.Format("{0}/Settings.StyleCop", root.FullName));
                File.WriteAllText(solutionFile.FullName, TemplateRenderer.Render(StyleCopTemplate, model));
                files.Add(solutionFile);
            }
            return(files.ToArray());
        }