private void UpdateBrandColour() { var model = new ColorModel(_settings.NewAppSettings.BrandColour); var template = Generator.GetCompiledTemplate("main.dart.colorfragment"); var codeFile = new CodeFile { Contents = template(model), IsFragment = true, Name = "main.dart", RelativePath = @".\lib\" }; _fileWriter.ApplyCodeFiles(new List <CodeFile>() { codeFile }, _flutterRootDirectory); }
public void Generate(ITypeProvider typeProvider) { Log.Information("Starting Code Generation in {RootDirectory}", _settings.RootDirectory); if (_settings.NewAppSettings?.CreateNew == true) { var newProjectGen = new NewProjectGenerator(_settings, _fs); var newProjectResult = newProjectGen.Generate(); if (newProjectResult == false) { Log.Error("Error generating new project - exiting"); return; } } if (_settings.AddGeneratedOptionsToDatabase) { var sb = new StringBuilder(); sb.AppendLine("-- generated by a tool"); typeProvider.DropGeneratedOperations(_settings, sb); typeProvider.DropGeneratedTypes(_settings, sb); var dropFile = new CodeFile() { Contents = sb.ToString(), Name = "drop_generated.sql" }; _fileWriter.ApplyCodeFiles(new List <CodeFile> { dropFile }, DatabaseScriptsFolder); Log.Information("Finishing dropping generated operations"); } var domain = typeProvider.GetDomain(_settings); Log.Information("Finished building domain"); domain.DefaultNamespace = _settings.ApplicationName; SetupRootFolder(); GenerateDbFunctions(domain, _settings.AddGeneratedOptionsToDatabase, typeProvider); Log.Information("Finished generating db functions"); typeProvider.GetOperations(domain); Log.Information("Finished adding operations to domain"); SanityCheckDomain(domain); GenerateClasses(domain); Log.Information("Finished generating classes"); GenerateRepositories(domain); Log.Information("Finished generating repositories"); if (_settings.GenerateTestRepos && !string.IsNullOrEmpty(_settings.TestDataDirectory)) { // this is very much a work-in-progress GenerateTestRepositories(domain); Log.Information("Finished generating test repositories"); } if (domain.ResultTypes.Any(rt => !rt.Ignore)) { GenerateReturnTypes(domain); Log.Information("Finished generating return types"); } if (_settings.WebUIType == WebUIType.MVC) { GenerateControllers(domain); GenerateViews(domain); GenerateViewModels(domain); Log.Information("Finished generating MVC UI"); } if (_settings.WebUIType == WebUIType.React) { GenerateWebApi(domain); GenerateWebApiModels(domain); if (!string.IsNullOrEmpty(_settings.OpenApiUri)) { var openApiDocProvider = new OpenApiDocumentProvider(_fs, _settings); var openApiDomainProvider = new OpenApiDomainProvider(openApiDocProvider); openApiDomainProvider.AugmentDomainFromOpenApi(domain); } GenerateClientServiceProxy(domain); GenerateClientApiModels(domain); GenerateClientPages(domain); Log.Information("Finished generating react UI"); } if (_settings.ClientAppTypes.Contains(ClientAppUIType.Flutter)) { var flutterGen = new Flutter.Generator(_fs, _settings, _fileWriter); flutterGen.Generate(domain); } if (_settings.TestDataSize != null && _settings.TestDataSize > 0) { var testDataGen = new TestDataGenerator(); var testData = testDataGen.Generate(domain); if (testData.Any()) { typeProvider.AddTestData(testData); } } Log.Information("Finished Code Generation"); }