This commit is contained in:
75
docs/snippets/csharp/cli/cli_with_config.cs
Normal file
75
docs/snippets/csharp/cli/cli_with_config.cs
Normal file
@@ -0,0 +1,75 @@
|
||||
```csharp title="cli_with_config.cs"
|
||||
using System;
|
||||
using System.CommandLine;
|
||||
using System.Text.Json;
|
||||
using System.Threading.Tasks;
|
||||
using Kreuzberg;
|
||||
|
||||
var rootCommand = new RootCommand("Kreuzberg with configuration");
|
||||
|
||||
var extractCommand = new Command("extract", "Extract with custom configuration");
|
||||
var filePath = new Argument<string>("path", "Document file path");
|
||||
var configPath = new Option<string>(
|
||||
new[] { "-c", "--config" },
|
||||
"Path to JSON configuration file"
|
||||
);
|
||||
var forceOcr = new Option<bool>(
|
||||
new[] { "--force-ocr" },
|
||||
"Force OCR processing"
|
||||
);
|
||||
var useCache = new Option<bool>(
|
||||
new[] { "--use-cache" },
|
||||
getDefaultValue: () => true,
|
||||
"Use caching (default: true)"
|
||||
);
|
||||
|
||||
extractCommand.AddArgument(filePath);
|
||||
extractCommand.AddOption(configPath);
|
||||
extractCommand.AddOption(forceOcr);
|
||||
extractCommand.AddOption(useCache);
|
||||
|
||||
extractCommand.SetHandler(async (path, config, ocr, cache) =>
|
||||
{
|
||||
try
|
||||
{
|
||||
ExtractionConfig extractionConfig;
|
||||
|
||||
if (!string.IsNullOrEmpty(config))
|
||||
{
|
||||
var json = await System.IO.File.ReadAllTextAsync(config);
|
||||
extractionConfig = JsonSerializer.Deserialize<ExtractionConfig>(json);
|
||||
}
|
||||
else
|
||||
{
|
||||
extractionConfig = new ExtractionConfig
|
||||
{
|
||||
UseCache = cache,
|
||||
ForceOcr = ocr,
|
||||
};
|
||||
}
|
||||
|
||||
Console.WriteLine("Extracting with configuration:");
|
||||
Console.WriteLine($" - File: {path}");
|
||||
Console.WriteLine($" - Force OCR: {extractionConfig.ForceOcr}");
|
||||
Console.WriteLine($" - Use Cache: {extractionConfig.UseCache}");
|
||||
|
||||
var result = await KreuzbergLib.ExtractFileAsync(path, extractionConfig);
|
||||
|
||||
Console.WriteLine($"\nExtraction complete:");
|
||||
Console.WriteLine($" - Content length: {result.Content.Length}");
|
||||
Console.WriteLine($" - Format: {result.Metadata.FormatType}");
|
||||
Console.WriteLine($" - Languages: {string.Join(", ", result.DetectedLanguages)}");
|
||||
|
||||
Console.WriteLine($"\n{result.Content}");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.Error.WriteLine($"Error: {ex.Message}");
|
||||
Environment.Exit(1);
|
||||
}
|
||||
}, filePath, configPath, forceOcr, useCache);
|
||||
|
||||
rootCommand.AddCommand(extractCommand);
|
||||
|
||||
return await rootCommand.InvokeAsync(args);
|
||||
```
|
||||
Reference in New Issue
Block a user