public IEnumerable <string> GenerateFilesForProject(
            string projectPath,
            string rootNamespace,
            List <string> featureFiles,
            List <string> generatorPlugins,
            string projectFolder,
            string outputPath)
        {
            using (var featureCodeBehindGenerator = new FeatureCodeBehindGenerator())
            {
                featureCodeBehindGenerator.InitializeProject(projectPath, rootNamespace, generatorPlugins);

                var codeBehindWriter = new CodeBehindWriter(null);

                if (featureFiles == null)
                {
                    yield break;
                }

                foreach (var featureFile in featureFiles)
                {
                    var featureFileItemSpec = featureFile;
                    var generatorResult     = featureCodeBehindGenerator.GenerateCodeBehindFile(featureFileItemSpec);

                    if (!generatorResult.Success)
                    {
                        foreach (var error in generatorResult.Errors)
                        {
                            Log.LogError(
                                null,
                                null,
                                null,
                                featureFile,
                                error.Line,
                                error.LinePosition,
                                0,
                                0,
                                error.Message);
                        }
                        continue;
                    }

                    var targetFilePath = _filePathGenerator.GenerateFilePath(
                        projectFolder,
                        outputPath,
                        featureFile,
                        generatorResult.Filename);

                    var resultedFile = codeBehindWriter.WriteCodeBehindFile(targetFilePath, featureFile, generatorResult);

                    yield return(FileSystemHelper.GetRelativePath(resultedFile, projectFolder));
                }
            }
        }
        public IEnumerable<string> GenerateFilesForProject(string projectPath, string rootNamespace, List<string> featureFiles, List<string> generatorPlugins, string projectFolder, string outputPath)
        {

            using (var featureCodeBehindGenerator = new FeatureCodeBehindGenerator())
            {
                featureCodeBehindGenerator.InitializeProject(projectPath, rootNamespace, generatorPlugins);

                var codeBehindWriter = new CodeBehindWriter(null);
                if (featureFiles != null)
                {
                    foreach (var featureFile in featureFiles)
                    {
                        string featureFileItemSpec = featureFile;
                        var featureFileCodeBehind = featureCodeBehindGenerator.GenerateCodeBehindFile(featureFileItemSpec);

                        string targetFilePath = _filePathGenerator.GenerateFilePath(projectFolder, outputPath, featureFile, featureFileCodeBehind.Filename);
                        string resultedFile = codeBehindWriter.WriteCodeBehindFile(targetFilePath, featureFile, featureFileCodeBehind);

                        yield return FileSystemHelper.GetRelativePath(resultedFile, projectFolder);
                    }
                }
            }

        }
 public FeatureFileCodeBehindGenerator(TaskLoggingHelper log, FeatureCodeBehindGenerator featureCodeBehindGenerator)
 {
     Log = log ?? throw new ArgumentNullException(nameof(log));
     _featureCodeBehindGenerator = featureCodeBehindGenerator;
     _filePathGenerator          = new FilePathGenerator();
 }