From 033d63be89b9c4b272d2995d836ddc1b2e817b8a Mon Sep 17 00:00:00 2001 From: Mattias Karlsson Date: Mon, 25 Mar 2024 13:28:25 +0100 Subject: [PATCH] Improve exception logging & path escaping --- src/ARI/Commands/InventoryCommand.cs | 7 ++++++- src/ARI/Extensions/StringMarkdownExtensions.cs | 4 +++- src/ARI/Program.cs | 4 ++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/ARI/Commands/InventoryCommand.cs b/src/ARI/Commands/InventoryCommand.cs index 15db034..af80ee1 100644 --- a/src/ARI/Commands/InventoryCommand.cs +++ b/src/ARI/Commands/InventoryCommand.cs @@ -1,4 +1,5 @@ using Cake.Common.IO; +using Microsoft.Identity.Client; using System.Collections.Concurrent; namespace ARI.Commands; @@ -27,7 +28,11 @@ public override async Task ExecuteAsync(CommandContext context, InventorySe var modified = DateTimeOffset.UtcNow; var markDownFileName = settings.MarkdownName + ".md"; var resourcesBag = new ConcurrentBag<(IResource Resource, DirectoryPath? Path)>(); - settings.OutputPath = settings.OutputPath.MakeAbsolute(CakeContext.Environment); + if (settings.OutputPath.IsRelative) + { + Logger.LogInformation("Relative outputpath {outputpath} making absolute...", settings.OutputPath); + settings.OutputPath = settings.OutputPath.MakeAbsolute(CakeContext.Environment); + } Logger.LogInformation("TenantId: {TenantId}", settings.TenantId); Logger.LogInformation("OutputPath: {OutputPath}", settings.OutputPath); Logger.LogInformation("Generate report in parallel: {GenerateInParallel}", settings.SkipTenantOverview); diff --git a/src/ARI/Extensions/StringMarkdownExtensions.cs b/src/ARI/Extensions/StringMarkdownExtensions.cs index 0d2aac2..4a049cc 100644 --- a/src/ARI/Extensions/StringMarkdownExtensions.cs +++ b/src/ARI/Extensions/StringMarkdownExtensions.cs @@ -30,7 +30,9 @@ public static string Link(this string description, string? href = default) : $"[{description}]({PathEscapeUriString(href ?? description)})"; public static string PathEscapeUriString(this string path) - => path.Aggregate( + => path + .TrimStart('/', '\\') + .Aggregate( new StringBuilder(), (sb, c) => !char.IsAsciiLetterOrDigit(c) diff --git a/src/ARI/Program.cs b/src/ARI/Program.cs index 566d26f..0c2ec58 100644 --- a/src/ARI/Program.cs +++ b/src/ARI/Program.cs @@ -64,6 +64,10 @@ config.AddCommand("inventory") .WithDescription("Example inventory command.") .WithExample(new[] { "inventory", "00000000-0000-0000-0000-000000000000", "outputpath" }); + + config.SetExceptionHandler( + ex => AnsiConsole.WriteException(ex, ExceptionFormats.ShowLinks) + ); }); return await app.RunAsync(args); \ No newline at end of file