diff --git a/docs/_docset.yml b/docs/_docset.yml index 9635852a7..a31228d0b 100644 --- a/docs/_docset.yml +++ b/docs/_docset.yml @@ -13,9 +13,7 @@ subs: serverless-short: Serverless ece: "Elastic Cloud Enterprise" eck: "Elastic Cloud on Kubernetes" - ech: "Elastic Cloud Hosted" - kib: "Kibana" - + features: primary-nav: false diff --git a/src/Elastic.Markdown/BuildContext.cs b/src/Elastic.Markdown/BuildContext.cs index d159230ab..3a4a9d788 100644 --- a/src/Elastic.Markdown/BuildContext.cs +++ b/src/Elastic.Markdown/BuildContext.cs @@ -30,7 +30,17 @@ public record BuildContext : IDocumentationContext public bool Force { get; init; } - public bool SkipDocumentationState { get; init; } + public bool SkipDocumentationState { get; private set; } + + public bool AssemblerBuild + { + get => _assemblerBuild; + init + { + _assemblerBuild = value; + SkipDocumentationState = value; + } + } // This property is used to determine if the site should be indexed by search engines public bool AllowIndexing { get; init; } @@ -41,6 +51,8 @@ public record BuildContext : IDocumentationContext public Uri? CanonicalBaseUrl { get; init; } private readonly string? _urlPathPrefix; + private readonly bool _assemblerBuild; + public string? UrlPathPrefix { get => string.IsNullOrWhiteSpace(_urlPathPrefix) ? "" : $"/{_urlPathPrefix.Trim('/')}"; diff --git a/src/Elastic.Markdown/DocumentationGenerator.cs b/src/Elastic.Markdown/DocumentationGenerator.cs index affcc0a28..ccdfadd76 100644 --- a/src/Elastic.Markdown/DocumentationGenerator.cs +++ b/src/Elastic.Markdown/DocumentationGenerator.cs @@ -65,7 +65,8 @@ public DocumentationGenerator( DocumentationSet = docSet; Context = docSet.Context; Resolver = docSet.LinkResolver; - HtmlWriter = new HtmlWriter(DocumentationSet, _writeFileSystem, new DescriptionGenerator(), navigationHtmlWriter, legacyUrlMapper, positionalNavigation); + HtmlWriter = new HtmlWriter(DocumentationSet, _writeFileSystem, new DescriptionGenerator(), navigationHtmlWriter, legacyUrlMapper, + positionalNavigation); _documentationFileExporter = documentationExporter ?? docSet.EnabledExtensions.FirstOrDefault(e => e.FileExporter != null)?.FileExporter @@ -97,20 +98,20 @@ public async Task GenerateAll(Cancel ctx) { var result = new GenerationResult(); - HashSet offendingFiles = []; - var outputSeenChanges = DateTimeOffset.MinValue; - if (Context.SkipDocumentationState) - DocumentationSet.ClearOutputDirectory(); - else - { - var generationState = GetPreviousGenerationState(); - if (Context.Force || generationState == null) - DocumentationSet.ClearOutputDirectory(); + var generationState = Context.SkipDocumentationState ? null : GetPreviousGenerationState(); - if (CompilationNotNeeded(generationState, out offendingFiles, out outputSeenChanges)) - return result; + // clear output directory if force is true but never for assembler builds since these build multiple times to the output. + if (Context is { AssemblerBuild: false, Force: true } + // clear the output directory if force is false but generation state is null, except for assembler builds. + || (Context is { AssemblerBuild: false, Force: false } && generationState == null)) + { + _logger.LogInformation($"Clearing output directory"); + DocumentationSet.ClearOutputDirectory(); } + if (CompilationNotNeeded(generationState, out var offendingFiles, out var outputSeenChanges)) + return result; + _logger.LogInformation($"Fetching external links"); _ = await Resolver.FetchLinks(ctx); diff --git a/src/tooling/docs-assembler/Navigation/AssemblerDocumentationSet.cs b/src/tooling/docs-assembler/Navigation/AssemblerDocumentationSet.cs index 55f5c66ed..4141ad0ce 100644 --- a/src/tooling/docs-assembler/Navigation/AssemblerDocumentationSet.cs +++ b/src/tooling/docs-assembler/Navigation/AssemblerDocumentationSet.cs @@ -69,7 +69,7 @@ public AssemblerDocumentationSet( CookiesWin = env.GoogleTagManager.CookiesWin }, CanonicalBaseUrl = new Uri("https://www.elastic.co"), // Always use the production URL. In case a page is leaked to a search engine, it should point to the production site. - SkipDocumentationState = true, + AssemblerBuild = true }; BuildContext = buildContext;