static (MavenRepoType type, string location) GetMavenInfoForArtifact(BindingConfig config, MavenArtifactConfig artifact) { var template = config.GetTemplateSet(artifact.TemplateSet); if (template.MavenRepositoryType.HasValue) { return(template.MavenRepositoryType.Value, template.MavenRepositoryLocation); } return(config.MavenRepositoryType, config.MavenRepositoryLocation); }
static async Task ProcessConfig(BindingConfig config) { var mavenProjects = new Dictionary <string, Project>(); var mavenGroups = new List <MavenGroup>(); foreach (var artifact in config.MavenArtifacts) { if (artifact.DependencyOnly) { continue; } var maven = MavenFactory.GetMavenRepository(config, artifact); var mavenGroup = maven.Groups.FirstOrDefault(g => g.Id == artifact.GroupId); Project project = null; project = await maven.GetProjectAsync(artifact.GroupId, artifact.ArtifactId, artifact.Version); if (project != null) { mavenProjects.Add($"{artifact.GroupId}/{artifact.ArtifactId}-{artifact.Version}", project); } } if (config.DownloadExternals) { await DownloadArtifacts(config, mavenProjects); } var slnProjModels = new Dictionary <string, BindingProjectModel>(); var models = BuildProjectModels(config, mavenProjects); var json = Newtonsoft.Json.JsonConvert.SerializeObject(models); if (config.Debug.DumpModels) { File.WriteAllText(Path.Combine(config.BasePath, "models.json"), json); } var engine = new RazorLightEngineBuilder() .UseMemoryCachingProvider() .Build(); foreach (var model in models) { var template_set = config.GetTemplateSet(model.MavenArtifacts.FirstOrDefault()?.MavenArtifactConfig?.TemplateSet); foreach (var template in template_set.Templates) { var inputTemplateFile = Path.Combine(config.BasePath, template.TemplateFile); var templateSrc = File.ReadAllText(inputTemplateFile); AssignMetadata(model, template); var outputFile = new FileInfo(template.GetOutputFile(config, model)); if (!outputFile.Directory.Exists) { outputFile.Directory.Create(); } string result = await engine.CompileRenderAsync(inputTemplateFile, templateSrc, model); File.WriteAllText(outputFile.FullName, result); // We want to collect all the models for the .csproj's so we can add them to a .sln file after if (!slnProjModels.ContainsKey(outputFile.FullName) && template.OutputFileRule.EndsWith(".csproj")) { slnProjModels.Add(outputFile.FullName, model); } } } if (!string.IsNullOrEmpty(config.SolutionFile)) { var slnPath = Path.Combine(config.BasePath ?? AppDomain.CurrentDomain.BaseDirectory, config.SolutionFile); var sln = SolutionFileBuilder.Build(config, slnProjModels); File.WriteAllText(slnPath, sln); } }