Import from internal git

This commit is contained in:
2025-10-11 13:08:09 +02:00
commit 97aaa715dc
175 changed files with 7014 additions and 0 deletions

View File

@@ -0,0 +1,90 @@
using System.Text;
using Core;
using Core.Actions;
using Core.Events;
namespace Generator.Infrastructure.Publication;
public class Publisher
{
private readonly CommandExecutor _executor;
public Publisher(string invite, DisplayEmitter emitter)
{
_executor = new CommandExecutor(invite, emitter);
}
/// <summary>
/// Published nuget package
/// </summary>
/// <param name="data"></param>
public async Task PublishNugget(DotnetPublish data)
{
var packageFolder = new Location([data.DockerRoot, data.PackageFolder]);
var stringBuilder = new StringBuilder();
stringBuilder
.Append($"docker run --rm -it -v {data.LocalRoot}:{data.DockerRoot} {data.Image} /bin/sh -c '")
.Append($"cd {packageFolder} && ")
.Append($"dotnet nuget push out/{data.PackageFile}.{data.PackageVersion}.nupkg -k {data.AuthorizationToken} -s {data.Registry}'");
await _executor.RunAsync(stringBuilder.ToString());
}
/// <summary>
/// Publishes npm packages
/// </summary>
/// <param name="data"></param>
public async Task PublishNpm(JavascriptPublish data)
{
var specFile = new Location([data.DockerRoot, data.SpecFile]).ToString().Replace("/api/", "");
var frontFolder = new Location([data.DockerRoot, data.FrontFolder]);
var creds = data.DockerRoot.ConcatenateWith(".npmrc");
var stringBuilder = new StringBuilder();
stringBuilder.Append($"docker run --rm -it -v {data.LocalRoot}:{data.DockerRoot} {data.Image} /bin/sh -c '");
stringBuilder.Append("cd front && ");
stringBuilder.Append($"npm run prepare-workspace -- --apiName={data.PackageName} --apiVersion={data.Version} ");
stringBuilder.Append($"--apiFile={specFile} --registry={data.Registry} && ");
stringBuilder.Append("npm run package && ");
stringBuilder.Append($"cp {creds} ./ && ");
stringBuilder.Append($"mkdir -p {frontFolder} && ");
stringBuilder.Append($"cp -r dist/* {frontFolder} && ");
stringBuilder.Append("npm run publish'");
await _executor.RunAsync(stringBuilder.ToString());
}
/// <summary>
/// Publishes maven package
/// </summary>
/// <param name="data"></param>
public async Task PublishMaven(JavaPublish data)
{
var templateFolder = new Location([data.DockerRoot, data.TemplateFolder]);
var outputFolder = new Location([data.DockerRoot, data.OutputFolder]);
var stringBuilder = new StringBuilder();
stringBuilder.Append($"docker run --rm -it -v {data.LocalRoot}:{data.DockerRoot} ");
stringBuilder.Append($"-v {data.LocalRoot}maven-generated:/root/.m2/repository {data.Image} /bin/sh -c '");
stringBuilder.Append($"cp {templateFolder}/settings.xml /root/.m2 && ");
stringBuilder.Append($"cd {outputFolder} && ");
stringBuilder.Append("mvn -e deploy:deploy-file ");
stringBuilder.Append($"-D file=target/{data.Artifact}-{data.Version}.jar ");
stringBuilder.Append($"-D groupId={data.Group} ");
stringBuilder.Append($"-D artifactId={data.Artifact} ");
stringBuilder.Append($"-D version={data.Version} ");
stringBuilder.Append("-D packaging=jar ");
stringBuilder.Append("-D generatePom=true ");
stringBuilder.Append("-D repositoryId=fcsd ");
stringBuilder.Append("-D skipTests ");
stringBuilder.Append($"-D url={data.Registry} ");
stringBuilder.Append("-D repo.id=fcsd ");
stringBuilder.Append($"-D repo.username={data.Username} ");
stringBuilder.Append($"-D repo.password={data.Password}'");
await _executor.RunAsync(stringBuilder.ToString());
}
}