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(
            IReadOnlyCollection <string> featureFiles,
            string projectFolder,
            string outputPath)
        {
            var codeBehindWriter = new CodeBehindWriter(null);

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

            foreach (var featureFile in featureFiles)
            {
                string 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;
                }

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

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

        }