From 46074b6bd1d9f3e8836b3e2e366976f58c0955f9 Mon Sep 17 00:00:00 2001 From: eugeniy_ivanov Date: Fri, 27 Jan 2023 17:31:43 +0500 Subject: [PATCH] OS identification and build start process option --- .../DrillingProgram/Convert/ConvertToPdf.cs | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/AsbCloudInfrastructure/Services/DrillingProgram/Convert/ConvertToPdf.cs b/AsbCloudInfrastructure/Services/DrillingProgram/Convert/ConvertToPdf.cs index b2043a10..baf40eab 100644 --- a/AsbCloudInfrastructure/Services/DrillingProgram/Convert/ConvertToPdf.cs +++ b/AsbCloudInfrastructure/Services/DrillingProgram/Convert/ConvertToPdf.cs @@ -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); }