Import from internal git
This commit is contained in:
123
Generator/Services/PublicationService.cs
Normal file
123
Generator/Services/PublicationService.cs
Normal file
@@ -0,0 +1,123 @@
|
||||
using Core;
|
||||
using Core.Process;
|
||||
using Core.SpecConfig;
|
||||
using Generator.Repo;
|
||||
|
||||
namespace Generator.Services;
|
||||
|
||||
public class PublicationService
|
||||
{
|
||||
|
||||
private readonly PublisherRepo _publisherRepo;
|
||||
private readonly RepositoryService _repoService;
|
||||
public PublicationService(
|
||||
PublisherRepo pubRepo,
|
||||
RepositoryService repoService)
|
||||
{
|
||||
_publisherRepo = pubRepo;
|
||||
_repoService = repoService;
|
||||
}
|
||||
|
||||
public async Task Publish(GenerationProcess process)
|
||||
{
|
||||
foreach (var task in process)
|
||||
{
|
||||
switch (task.Language)
|
||||
{
|
||||
case Language.Dotnet:
|
||||
await PublishDotnet(task);
|
||||
break;
|
||||
case Language.Java:
|
||||
await PublishJava(task);
|
||||
break;
|
||||
case Language.Javascript:
|
||||
await PublishJavascript(task);
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public async Task PublishDotnet(ProcessTask task)
|
||||
{
|
||||
while (task.Tasks.TryDequeue(out var file))
|
||||
{
|
||||
await PublishDotnet(file, task.GenerationType, task.PublishType);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task PublishJava(ProcessTask task)
|
||||
{
|
||||
while (task.Tasks.TryDequeue(out var file))
|
||||
{
|
||||
await PublishJava(file, task.GenerationType, task.PublishType);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task PublishJavascript(ProcessTask task)
|
||||
{
|
||||
while (task.Tasks.TryDequeue(out var file))
|
||||
{
|
||||
await PublishJavascript(file, task.GenerationType, task.PublishType);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task PublishDotnet(ISpecFile file, GenerationType genType, PublishType pubType)
|
||||
{
|
||||
var data = await _repoService.GetVersions(Language.Dotnet, file.NugetPackage);
|
||||
var package = data.FirstOrDefault(pd => pd.Version == file.Version);
|
||||
|
||||
if(pubType == PublishType.Force)
|
||||
{
|
||||
if (package != null) await _repoService.DeletePackage(package.Id);
|
||||
await _publisherRepo.PublishDotnet(genType, file);
|
||||
return;
|
||||
}
|
||||
|
||||
if(pubType == PublishType.Safe)
|
||||
{
|
||||
if (package == null) await _publisherRepo.PublishDotnet(genType, file);
|
||||
else Console.WriteLine($"The version {file.Version} of package {file.NugetPackage} already exists on the repository");
|
||||
}
|
||||
}
|
||||
|
||||
public async Task PublishJava(ISpecFile file, GenerationType genType, PublishType pubType)
|
||||
{
|
||||
var artifact = $"{file.Name}-api";
|
||||
var data = await _repoService.GetVersions(Language.Java, artifact);
|
||||
var package = data.FirstOrDefault(pd => pd.Version == file.Version);
|
||||
|
||||
if(pubType == PublishType.Force)
|
||||
{
|
||||
if (package != null) await _repoService.DeletePackage(package.Id);
|
||||
await _publisherRepo.PublishJava(genType, file);
|
||||
return;
|
||||
}
|
||||
|
||||
if(pubType == PublishType.Safe)
|
||||
{
|
||||
if (package == null) await _publisherRepo.PublishJava(genType, file);
|
||||
else Console.WriteLine($"The version {file.Version} of package {artifact} already exists on the repository");
|
||||
}
|
||||
}
|
||||
|
||||
public async Task PublishJavascript(ISpecFile file, GenerationType genType, PublishType pubType)
|
||||
{
|
||||
var data = await _repoService.GetVersions(Language.Javascript, file.NpmPackage);
|
||||
var package = data.FirstOrDefault(pd => pd.Version == file.Version);
|
||||
|
||||
if(pubType == PublishType.Force)
|
||||
{
|
||||
if (package != null) await _repoService.DeletePackage(package.Id);
|
||||
await _publisherRepo.PublishJavascript(genType, file);
|
||||
return;
|
||||
}
|
||||
|
||||
if(pubType == PublishType.Safe)
|
||||
{
|
||||
if (package == null) await _publisherRepo.PublishJavascript(genType, file);
|
||||
else Console.WriteLine($"The version {file.Version} of package {file.NpmPackage} already exists on the repository");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user