using Core.Exceptions; using Core.SpecConfig; using Generator.Repo; namespace Generator.Services; public class GenerationService { private readonly GenerateRepo _repo; private readonly PublicationService _pubService; public GenerationService(PublicationService publicationService, GenerateRepo repo) { _repo = repo; _pubService = publicationService; } public async Task Launch(ProcessTask task) { switch (task.Language) { case Language.Dotnet: await LaunchDotnet(task); break; case Language.Java: await LaunchJava(task); break; case Language.Javascript: await LaunchJavascript(task); break; default: throw new WeirdException("You broke me :("); } } public async Task LaunchDotnet(ProcessTask task) { while (task.Tasks.TryDequeue(out var file)) { await _repo.GenerateDotnet(task.GenerationType, file); if (task.PublishType == PublishType.No) continue; await _pubService.PublishDotnet(file, task.GenerationType, task.PublishType); } } public async Task LaunchJava(ProcessTask task) { while (task.Tasks.TryDequeue(out var file)) { await _repo.GenerateJava(file); if (task.PublishType == PublishType.No) continue; await _pubService.PublishJava(file, task.GenerationType, task.PublishType); } } public async Task LaunchJavascript(ProcessTask task) { while (task.Tasks.TryDequeue(out var file)) { await _repo.GenerateJavascript(file); if (task.PublishType == PublishType.No) continue; await _pubService.PublishJavascript(file, task.GenerationType, task.PublishType); } } }