private static void NewViewsConvention() { codeGenServiceFake = new Mock<ICodeGeneratorService>(); viewsConvention = new ViewsConvention(codeGenServiceFake.Object, new ModelFactory()); }
public int Generate(string wszInputFilePath, string bstrInputFileContents, string wszDefaultNamespace, IntPtr[] rgbOutputFileContents, out uint pcbOutput, IVsGeneratorProgress pGenerateProgress) { pcbOutput = 0; var t4CodeGenerator = new T4CodeGeneratorService(); var statusBarService = new VsStatusBarService(); var projectItem = GetService(typeof (EnvDTE.ProjectItem)) as EnvDTE.ProjectItem; var dte = projectItem.DTE; var factory = new VsIntegrationModelFactory(dte); var solution = factory.NewSolution(dte.FullName); statusBarService.SetText(string.Format(statusBarStringTemplate, "Code generation begins")); var mvvmParser = new Parser(); var mvvmSpec = mvvmParser.Parse(Code.Inline(bstrInputFileContents)); var mvvmFile = TreeWalker.FindFileInSolution(solution, wszInputFilePath); var mvvmConfig = new HashSet<string>(); var mvvmConfigFileName = string.Format("{0}conf", mvvmFile.Name); if (mvvmFile.Parent.HasFile(mvvmConfigFileName)) { var codeGenConfigDslParser = new CodeGeneratorConfig.Parser(); mvvmConfig = codeGenConfigDslParser.Parse(Code.FromFile(Path.Combine(mvvmFile.DirectoryPath, mvvmConfigFileName))); } statusBarService.SetText(string.Format(statusBarStringTemplate, "Generating ViewModels")); var viewModelsConvention = new GeneratedViewModelsConvention(t4CodeGenerator); viewModelsConvention.Apply(mvvmSpec, mvvmFile); if (mvvmConfig.Contains("partial viewmodels")) { statusBarService.SetText(string.Format(statusBarStringTemplate, "Generating Partial classes for ViewModels")); var partialViewModelsConvention = new PartialViewModelsConvention(t4CodeGenerator); partialViewModelsConvention.Apply(mvvmSpec, mvvmFile); } if (mvvmConfig.Contains("views")) { statusBarService.SetText(string.Format(statusBarStringTemplate, "Generating Views for ViewModels")); var viewsConvention = new ViewsConvention(t4CodeGenerator, factory); viewsConvention.Apply(mvvmSpec, mvvmFile); } if (mvvmConfig.Contains("controllers")) { statusBarService.SetText(string.Format(statusBarStringTemplate, "Generating Controllers for ViewModels")); var controllersConvention = new ControllersConvention(t4CodeGenerator, factory); controllersConvention.Apply(mvvmSpec, mvvmFile); } if (mvvmConfig.Contains("tests")) { statusBarService.SetText(string.Format(statusBarStringTemplate, "Generating Unit Tests for ViewModels")); var unitTestsConvention = new UnitTestsConvention(t4CodeGenerator, factory); unitTestsConvention.Apply(mvvmSpec, mvvmFile); } statusBarService.SetText(string.Format(statusBarStringTemplate, "Generating ViewModels Completed :)")); return VSConstants.S_OK; }