public async Task <int> OnExecute(CommandLineApplication app, IConsole console) { var processService = new ProcessService(); var webService = new WebService(); console.WriteLine("Creating directories"); var directoryService = new DirectoryService(Path, ProjectName); directoryService.CreateAll(); console.WriteLine("Create README.md"); File.Create(System.IO.Path.Combine(directoryService.ProjectDirectory.FullName, "README.md")); console.WriteLine("Add .gitignore from GitHub's gitignore repository"); await webService.CreateGitIgnore(directoryService.ProjectDirectory); console.WriteLine("Create solution"); var exitcode = await processService.CreateSolution(ProjectName, directoryService.ProjectDirectory, console); console.WriteLine("Create project"); exitcode += await processService.CreateProject(ProjectName, ProjectType, directoryService.Src, console); console.WriteLine("Create test project"); exitcode += await processService.CreateTestProject(ProjectName, directoryService.Test, console); console.WriteLine("Add projects to solution"); exitcode += await processService.AddProjectsToSolution(ProjectName, directoryService.ProjectDirectory, console); console.WriteLine("Initialize git flow"); exitcode += await processService.InitGitFlow(directoryService.ProjectDirectory, console); return(exitcode); }