123 lines
4.0 KiB
C#
123 lines
4.0 KiB
C#
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");
|
|
}
|
|
}
|
|
} |