From 898030f83249277ae8c836e51ae4b04c99bb9dcc Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Wed, 19 Feb 2025 20:31:41 +0100 Subject: [PATCH] Ensure docs-builder serve shares the same service collection bootstrapping as the CLI tools --- .../DocumentationTooling.cs | 13 ++++++--- src/Elastic.Markdown/Slices/HtmlWriter.cs | 29 ++++--------------- .../Slices/Layout/_TocTreeNav.cshtml | 8 ++--- src/docs-builder/Http/DocumentationWebHost.cs | 7 ++--- 4 files changed, 20 insertions(+), 37 deletions(-) diff --git a/Elastic.Documentation.Tooling/DocumentationTooling.cs b/Elastic.Documentation.Tooling/DocumentationTooling.cs index 701099913..8d97657ef 100644 --- a/Elastic.Documentation.Tooling/DocumentationTooling.cs +++ b/Elastic.Documentation.Tooling/DocumentationTooling.cs @@ -18,7 +18,15 @@ public static ServiceProvider CreateServiceProvider(ref string[] args, Action()); _ = services.AddLogging(x => x @@ -27,9 +35,6 @@ public static ServiceProvider CreateServiceProvider(ref string[] args, Action c.FormatterName = "condensed") ); - configure?.Invoke(services); - - return services.BuildServiceProvider(); } private static void ProcessCommandLineArguments(ref string[] args, ref LogLevel defaultLogLevel) diff --git a/src/Elastic.Markdown/Slices/HtmlWriter.cs b/src/Elastic.Markdown/Slices/HtmlWriter.cs index e09dd2924..6128d3bfd 100644 --- a/src/Elastic.Markdown/Slices/HtmlWriter.cs +++ b/src/Elastic.Markdown/Slices/HtmlWriter.cs @@ -3,30 +3,13 @@ // See the LICENSE file in the project root for more information using System.IO.Abstractions; using Elastic.Markdown.IO; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; using RazorSlices; namespace Elastic.Markdown.Slices; -public class HtmlWriter +public class HtmlWriter(DocumentationSet documentationSet, IFileSystem writeFileSystem) { - private readonly IFileSystem _writeFileSystem; - - public HtmlWriter(DocumentationSet documentationSet, IFileSystem writeFileSystem) - { - _writeFileSystem = writeFileSystem; - var services = new ServiceCollection(); - _ = services.AddLogging(); - - ServiceProvider = services.BuildServiceProvider(); - LoggerFactory = ServiceProvider.GetRequiredService(); - DocumentationSet = documentationSet; - } - - private DocumentationSet DocumentationSet { get; } - public ILoggerFactory LoggerFactory { get; } - public ServiceProvider ServiceProvider { get; } + private DocumentationSet DocumentationSet { get; } = documentationSet; private async Task RenderNavigation(MarkdownFile markdown, Cancel ctx = default) { @@ -79,7 +62,6 @@ public async Task WriteAsync(IFileInfo outputFile, MarkdownFile markdown, Cancel if (outputFile.Directory is { Exists: false }) outputFile.Directory.Create(); - var rendered = await RenderLayout(markdown, ctx); string path; if (outputFile.Name == "index.md") path = Path.ChangeExtension(outputFile.FullName, ".html"); @@ -89,15 +71,16 @@ public async Task WriteAsync(IFileInfo outputFile, MarkdownFile markdown, Cancel ? null : Path.Combine(outputFile.Directory.FullName, Path.GetFileNameWithoutExtension(outputFile.Name)); - if (dir is not null && !_writeFileSystem.Directory.Exists(dir)) - _ = _writeFileSystem.Directory.CreateDirectory(dir); + if (dir is not null && !writeFileSystem.Directory.Exists(dir)) + _ = writeFileSystem.Directory.CreateDirectory(dir); path = dir is null ? Path.GetFileNameWithoutExtension(outputFile.Name) + ".html" : Path.Combine(dir, "index.html"); } - await _writeFileSystem.File.WriteAllTextAsync(path, rendered, ctx); + var rendered = await RenderLayout(markdown, ctx); + await writeFileSystem.File.WriteAllTextAsync(path, rendered, ctx); } } diff --git a/src/Elastic.Markdown/Slices/Layout/_TocTreeNav.cshtml b/src/Elastic.Markdown/Slices/Layout/_TocTreeNav.cshtml index ead5995ed..3fa6e90cc 100644 --- a/src/Elastic.Markdown/Slices/Layout/_TocTreeNav.cshtml +++ b/src/Elastic.Markdown/Slices/Layout/_TocTreeNav.cshtml @@ -8,12 +8,8 @@ var f = file.File;
  • } diff --git a/src/docs-builder/Http/DocumentationWebHost.cs b/src/docs-builder/Http/DocumentationWebHost.cs index 5b97a0bd3..15887fd7c 100644 --- a/src/docs-builder/Http/DocumentationWebHost.cs +++ b/src/docs-builder/Http/DocumentationWebHost.cs @@ -4,6 +4,7 @@ using System.IO.Abstractions; using Documentation.Builder.Diagnostics.LiveMode; +using Elastic.Documentation.Tooling; using Elastic.Markdown; using Elastic.Markdown.IO; using Microsoft.AspNetCore.Builder; @@ -28,14 +29,12 @@ public class DocumentationWebHost public DocumentationWebHost(string? path, int port, ILoggerFactory logger, IFileSystem fileSystem) { var builder = WebApplication.CreateSlimBuilder(); + DocumentationTooling.CreateServiceCollection(builder.Services, LogLevel.Warning); _ = builder.Logging - .ClearProviders() - .SetMinimumLevel(LogLevel.Warning) .AddFilter("Microsoft.AspNetCore.Hosting.Diagnostics", LogLevel.Error) .AddFilter("Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware", LogLevel.Error) - .AddFilter("Microsoft.Hosting.Lifetime", LogLevel.Information) - .AddSimpleConsole(o => o.SingleLine = true); + .AddFilter("Microsoft.Hosting.Lifetime", LogLevel.Information); _context = new BuildContext(fileSystem, fileSystem, path, null) {