OS identification and build start process option

This commit is contained in:
eugeniy_ivanov 2023-01-27 17:31:43 +05:00
parent 1d618302f8
commit 46074b6bd1

View File

@ -6,6 +6,7 @@ using System.Linq;
using CliWrap;
using System.Threading.Tasks;
using System.Threading;
using System;
namespace AsbCloudInfrastructure.Services.DrillingProgram.Convert
{
@ -33,10 +34,30 @@ namespace AsbCloudInfrastructure.Services.DrillingProgram.Convert
};
}
private static (string programFile, string programArg) getOptionsStartupProcess (string inputFileName, string resultFileDir)
{
(string programFile, string programArg) startupOptions;
if (OperatingSystem.IsWindows())
{
startupOptions.programFile = "C:\\Program Files\\LibreOffice\\program\\soffice.exe";
startupOptions.programArg = $"-headless -convert-to pdf {inputFileName} --outdir {resultFileDir}";
return startupOptions;
}
if(OperatingSystem.IsLinux())
{
startupOptions.programFile = "/usr/bin/soffice";
startupOptions.programArg = $"--headless --convert-to pdf {inputFileName} --outdir {resultFileDir}";
return (startupOptions);
}
throw new NotSupportedException ("Вызов процесса в текущей операционной системе не возможен");
}
private static async Task StartConvertProcessAsync(string inputFileName, string resultFileDir, CancellationToken token)
{
var command = Cli.Wrap("/usr/bin/soffice")
.WithArguments($"--headless --convert-to pdf {inputFileName} --outdir {resultFileDir}");
var startupOptions = getOptionsStartupProcess(inputFileName, resultFileDir);
var command = Cli.Wrap(startupOptions.programFile)
.WithArguments(startupOptions.programArg);
await command.ExecuteAsync(token);
}