Import from internal git
This commit is contained in:
90
Generator/Infrastructure/Publication/Publisher.cs
Normal file
90
Generator/Infrastructure/Publication/Publisher.cs
Normal 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());
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user