Exemple #1
0
        private async Task <int> HandleAndReturnExitCodeAsync(CreateOptions options)
        {
            if (options.UnitTest)
            {
                options.ProjectType += "UnitTest";
            }

            if (!(await _projectGeneratorFactory.SupportsProjectType(options.ProjectType)))
            {
                _logger.Warn("Project type {ProjectType} not supported.", options.ProjectType);
                return(-1);
            }

            _projectDirectoryProvider.SolutionDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, options.Name);
            _logger.Info($"Generating solution directory \"{options.Name}\".");
            _directoryManipulator.CreateDirectory(_projectDirectoryProvider.SolutionDirectory);

            IProjectGenerator projectGenerator = _projectGeneratorFactory.CreateGeneratorFor(options.ProjectType);

            try
            {
                await projectGenerator.GenerateProject(options.Name);

                if (options.InitGit)
                {
                    projectGenerator.InitGit();

                    if (options.UseGitMetadata)
                    {
                        await projectGenerator.AddGitMetadata();
                    }

                    if (options.ReadmeDescription != null)
                    {
                        projectGenerator.AddReadme(options.Name, options.ReadmeDescription);
                    }

                    if (options.CommitMessage != null)
                    {
                        projectGenerator.Commit(options.CommitMessage);
                    }

                    if (options.GitRemote != null)
                    {
                        projectGenerator.AddRemote(options.GitRemote);

                        if (options.Push)
                        {
                            projectGenerator.Push();
                        }
                    }
                }
            }
            catch (Exception)
            {
                _logger.Error("An error ocurred during project generation.");
            }

            return(0);
        }
Exemple #2
0
        internal AppDataStore(IAppNameProvider appNameProvider, IDirectoryManipulator directoryManipulator, IFileManipulator fileManipulator)
        {
            _appPath         = Path.Combine(directoryManipulator.AppDataPath, appNameProvider.AppName);
            _fileManipulator = fileManipulator;

            directoryManipulator.CreateDirectory(_appPath);
        }
Exemple #3
0
        public async Task GenerateProject(string projectName)
        {
            _logger.Info("Generating Visual Studio project using template for {ProjectType} project type.", _projectType);

            FileTreeTemplate fileTreeTemplate = await _solutionTemplateProvider.TemplateFor(_projectType);

            foreach (FileTreeEntry fileTreeEntry in fileTreeTemplate.Entries)
            {
                RenderedFileTreeEntry renderedEntry = await _solutionTemplateProvider.RenderFileTreeEntry(_projectType, projectName, fileTreeEntry);

                string path = _directoryManipulator.PathNameRelativeToDirectory(_solutionDirectory, renderedEntry.RelativePath);

                if (renderedEntry.IsDirectory)
                {
                    LogDirectory(renderedEntry.RelativePath);
                    _directoryManipulator.CreateDirectory(path);
                }
                else
                {
                    LogFile(renderedEntry.RelativePath);
                    _fileManipulator.CreateFile(path, renderedEntry.Contents);
                }
            }
        }