From fbbff5e7005ff9ecba8023334dee3a080ec99914 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5rten=20R=C3=A5nge?= Date: Tue, 25 Aug 2026 12:25:17 +0200 Subject: [PATCH 1/2] On IOException generate a randomized name --- src/ARI/Extensions/CakeContextExtension.cs | 25 +++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/ARI/Extensions/CakeContextExtension.cs b/src/ARI/Extensions/CakeContextExtension.cs index 394599a..cd11ade 100644 --- a/src/ARI/Extensions/CakeContextExtension.cs +++ b/src/ARI/Extensions/CakeContextExtension.cs @@ -11,7 +11,6 @@ public static TextWriter OpenIndexWrite( out DirectoryPath targetPath ) => cakeContext.OpenIndexWrite(parentPath, azureResource.PublicId, markDownFileName, out targetPath); - public static TextWriter OpenIndexWrite( this ICakeContext cakeContext, @@ -37,10 +36,26 @@ string markDownFileName cakeContext.EnsureDirectoryExists(targetPath); } - var stream = cakeContext - .FileSystem - .GetFile(targetPath.CombineWithFilePath(markDownFileName)) - .OpenWrite(); + Stream stream; + try + { + stream = cakeContext + .FileSystem + .GetFile(targetPath.CombineWithFilePath(markDownFileName)) + .OpenWrite(); + } + catch(IOException) + { + // In certain situations file-locking occurs + var fallbackName = System.IO.Path.GetFileNameWithoutExtension(markDownFileName) + + "_" + Guid.NewGuid().ToString("N") + + System.IO.Path.GetExtension(markDownFileName); + + stream = cakeContext + .FileSystem + .GetFile(targetPath.CombineWithFilePath(fallbackName)) + .OpenWrite(); + } var writer = new StreamWriter( stream, From d4bb0736d696e6a1831eeb41ea91888f9efc902b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5rten=20R=C3=A5nge?= Date: Tue, 25 Aug 2026 12:54:07 +0200 Subject: [PATCH 2/2] In case of empty resource key use 'NOKEY' --- src/ARI/Commands/InventoryCommand.cs | 11 +++++++--- src/ARI/Extensions/CakeContextExtension.cs | 25 +++++----------------- 2 files changed, 13 insertions(+), 23 deletions(-) diff --git a/src/ARI/Commands/InventoryCommand.cs b/src/ARI/Commands/InventoryCommand.cs index 0c664d1..a0b1674 100644 --- a/src/ARI/Commands/InventoryCommand.cs +++ b/src/ARI/Commands/InventoryCommand.cs @@ -229,14 +229,19 @@ await writer.WriteLineAsync( var order = 0; foreach (var resources in tag.Resources) { - await writer.WriteLineAsync($"| {resources.Key.Link()} |"); + var key = resources.Key; + if (string.IsNullOrWhiteSpace(key)) + { + key = "NOKEY"; + } + await writer.WriteLineAsync($"| {key.Link()} |"); using var valueWriter = CakeContext - .OpenIndexWrite(tagPath, resources.Key, markDownFileName, out var tagValuePath); + .OpenIndexWrite(tagPath, key, markDownFileName, out var tagValuePath); await valueWriter.AddFrontmatter( modified, - $"{tag.PublicId} = {resources.Key}", + $"{tag.PublicId} = {key}", Interlocked.Increment(ref order), settings ); diff --git a/src/ARI/Extensions/CakeContextExtension.cs b/src/ARI/Extensions/CakeContextExtension.cs index cd11ade..394599a 100644 --- a/src/ARI/Extensions/CakeContextExtension.cs +++ b/src/ARI/Extensions/CakeContextExtension.cs @@ -11,6 +11,7 @@ public static TextWriter OpenIndexWrite( out DirectoryPath targetPath ) => cakeContext.OpenIndexWrite(parentPath, azureResource.PublicId, markDownFileName, out targetPath); + public static TextWriter OpenIndexWrite( this ICakeContext cakeContext, @@ -36,26 +37,10 @@ string markDownFileName cakeContext.EnsureDirectoryExists(targetPath); } - Stream stream; - try - { - stream = cakeContext - .FileSystem - .GetFile(targetPath.CombineWithFilePath(markDownFileName)) - .OpenWrite(); - } - catch(IOException) - { - // In certain situations file-locking occurs - var fallbackName = System.IO.Path.GetFileNameWithoutExtension(markDownFileName) - + "_" + Guid.NewGuid().ToString("N") - + System.IO.Path.GetExtension(markDownFileName); - - stream = cakeContext - .FileSystem - .GetFile(targetPath.CombineWithFilePath(fallbackName)) - .OpenWrite(); - } + var stream = cakeContext + .FileSystem + .GetFile(targetPath.CombineWithFilePath(markDownFileName)) + .OpenWrite(); var writer = new StreamWriter( stream,