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);
        }