added light console app for test "OS detection"

This commit is contained in:
eugeniy_ivanov 2023-01-27 18:16:25 +05:00
parent 46074b6bd1
commit dd0e49be0a
2 changed files with 88 additions and 36 deletions

View File

@ -13,49 +13,62 @@ namespace ConsoleApp1
{ {
static void Main(/*string[] args*/) static void Main(/*string[] args*/)
{ {
string[] fileExtension = { ".xlsx", ".xls", ".ods", ".odt", ".doc", ".docx", ".pdf" }; // string[] fileExtension = { ".xlsx", ".xls", ".ods", ".odt", ".doc", ".docx", ".pdf" };
Console.WriteLine($"start convert"); // Console.WriteLine($"start convert");
var inputFiles = new List<string>(); // var inputFiles = new List<string>();
var resultFile = "C:\\Test\\result.pdf"; // var resultFile = "C:\\Test\\result.pdf";
inputFiles.Add("11112222.docx"); // inputFiles.Add("11112222.docx");
inputFiles.Add("11117777.pdf"); // inputFiles.Add("11117777.pdf");
inputFiles.Add("22223333.xls"); // inputFiles.Add("22223333.xls");
inputFiles.Add("33334444.xlsx"); // inputFiles.Add("33334444.xlsx");
//inputFiles.Add("33334444.tts"); // //inputFiles.Add("33334444.tts");
var listOutNames = new List<string>(); // var listOutNames = new List<string>();
var filteredFilesNames = inputFiles // var filteredFilesNames = inputFiles
.Distinct() // .Distinct()
.Where(f => fileExtension.Any(fe => f.ToLower().EndsWith(fe))) // .Where(f => fileExtension.Any(fe => f.ToLower().EndsWith(fe)))
.ToList(); // .ToList();
FileInfo fileInfo = new FileInfo(resultFile); // FileInfo fileInfo = new FileInfo(resultFile);
//matchesExtensions(inputFiles); // //matchesExtensions(inputFiles);
foreach (var FileName in inputFiles) // foreach (var FileName in inputFiles)
// {
// var outputFile = Path.ChangeExtension(FileName, ".pdf");
// var outFile = StartConvertProcessAsync(FileName, outputFile);
// Console.WriteLine($"convert file - {FileName}");
// Console.ReadLine();
// listOutNames.Add(outFile.Result.ToString());
// }
// Console.WriteLine("merged files");
// Console.ReadLine();
// DoMerged(listOutNames, resultFile);
//static void matchesExtensions(List<string> inputFiles)
// {
// string[] fileExtension = { ".xlsx", ".xls", ".ods", ".odt", ".doc", ".docx", ".pdf" };
// foreach (var file in inputFiles)
// {
// var fileExt = Path.GetExtension(file);
// if (fileExtension.All(fe => fileExt != fe))
// {
// throw new FileFormatException($"Файл с именем: {file} не может быть добавлен в список файлов для конвертации и слияния в общий файл программы бурения. Не поддерживаемый формат файла");
// }
// }
// }
if (OperatingSystem.IsWindows())
{ {
var outputFile = Path.ChangeExtension(FileName, ".pdf"); Console.WriteLine("win");
var outFile = StartConvertProcessAsync(FileName, outputFile);
Console.WriteLine($"convert file - {FileName}");
Console.ReadLine(); Console.ReadLine();
listOutNames.Add(outFile.Result.ToString());
} }
Console.WriteLine("merged files"); if (OperatingSystem.IsLinux())
Console.ReadLine();
DoMerged(listOutNames, resultFile);
static void matchesExtensions(List<string> inputFiles)
{ {
string[] fileExtension = { ".xlsx", ".xls", ".ods", ".odt", ".doc", ".docx", ".pdf" }; Console.WriteLine("linux");
foreach (var file in inputFiles) Console.ReadLine();
{
var fileExt = Path.GetExtension(file);
if (fileExtension.All(fe => fileExt != fe))
{
throw new FileFormatException($"Файл с именем: {file} не может быть добавлен в список файлов для конвертации и слияния в общий файл программы бурения. Не поддерживаемый формат файла");
}
}
} }
} }
public static void DoMerged(IEnumerable<string> inputFiles, string outFile) public static void DoMerged(IEnumerable<string> inputFiles, string outFile)
@ -78,6 +91,25 @@ namespace ConsoleApp1
}; };
} }
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("Вызов процесса в текущей операционной системе не возможен");
}
//public static void StartConvertProcess(string inputFileName, string outFileName) //public static void StartConvertProcess(string inputFileName, string outFileName)
//{ //{
// using (Process pdfprocess = new Process()) // using (Process pdfprocess = new Process())
@ -98,6 +130,9 @@ namespace ConsoleApp1
//} //}
private static async Task<string> StartConvertProcessAsync(string inputFileName, string outFileName) private static async Task<string> StartConvertProcessAsync(string inputFileName, string outFileName)
{ {
var progrAndArg = getOptionsStartupProcess(inputFileName, outFileName);
//string outPath = "/home/eddie/Test/OutFiles"; //string outPath = "/home/eddie/Test/OutFiles";
string outPath = "C:\\Test\\OutFiles"; string outPath = "C:\\Test\\OutFiles";
var result = Cli.Wrap("C:\\Program Files\\LibreOffice\\program\\soffice.exe") var result = Cli.Wrap("C:\\Program Files\\LibreOffice\\program\\soffice.exe")

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
<PropertyGroup>
<Configuration>Release</Configuration>
<Platform>Any CPU</Platform>
<PublishDir>C:\home\linux_test_test</PublishDir>
<PublishProtocol>FileSystem</PublishProtocol>
<TargetFramework>net6.0</TargetFramework>
<RuntimeIdentifier>linux-x64</RuntimeIdentifier>
<SelfContained>true</SelfContained>
<PublishSingleFile>false</PublishSingleFile>
<PublishTrimmed>false</PublishTrimmed>
</PropertyGroup>
</Project>