Class Static
public static class EngineServiceExtensions

Namespace: Moka.Docs.Engine

Extension methods for registering build engine services.

Methods

NameDescription
AddMokaDocsEngine(IServiceCollection services) static Adds MokaDocs build engine services and all pipeline phases.

AddMokaDocsEngine(IServiceCollection services)

IServiceCollection EngineServiceExtensions.AddMokaDocsEngine(IServiceCollection services)

Adds MokaDocs build engine services and all pipeline phases.

View Source
/// <summary>
///     Extension methods for registering build engine services.
/// </summary>
public static class EngineServiceExtensions
{
    /// <summary>
    ///     Adds MokaDocs build engine services and all pipeline phases.
    /// </summary>
    public static IServiceCollection AddMokaDocsEngine(this IServiceCollection services)
    {
        // Register feature management with MokaDefaults + env var overrides
        IConfigurationRoot featureConfig = new ConfigurationBuilder().AddInMemoryCollection(MokaFeatureConfiguration.GetDefaults().Select(kvp => new KeyValuePair<string, string?>($"FeatureManagement:{kvp.Key}", kvp.Value.ToString()))).AddEnvironmentVariables("MOKADOCS_").Build();
        services.AddSingleton<IConfiguration>(featureConfig);
        services.AddFeatureManagement(featureConfig.GetSection("FeatureManagement"));
        services.AddSingleton<BuildPipeline>();
        services.AddSingleton<FileDiscoveryService>();
        services.AddSingleton<BrandAssetResolver>();
        // Template engine and default theme
        services.AddSingleton<ScribanTemplateEngine>();
        services.AddSingleton(_ => EmbeddedThemeProvider.CreateDefault());
        services.AddSingleton<ThemeLoader>();
        // Register build phases
        services.AddSingleton<IBuildPhase, DiscoveryPhase>();
        services.AddSingleton<IBuildPhase, CSharpAnalysisPhase>();
        services.AddSingleton<IBuildPhase, MarkdownParsePhase>();
        services.AddSingleton<IBuildPhase, FeatureGatePhase>();
        services.AddSingleton<IBuildPhase, NavigationBuildPhase>();
        services.AddSingleton<IBuildPhase, SearchIndexPhase>();
        services.AddSingleton<IBuildPhase, RenderPhase>();
        services.AddSingleton<IBuildPhase, ThemeAssetPhase>();
        services.AddSingleton<IBuildPhase, OutputPhase>();
        services.AddSingleton<IBuildPhase, PostProcessPhase>();
        return services;
    }
}
Was this page helpful?