Kotlin / dokka

API documentation engine for Kotlin
https://kotl.in/dokka
Apache License 2.0
3.45k stars 410 forks source link

Dokka 2+: Creating a custom format requires access to an internal configuration #3925

Open CLOVIS-AI opened 1 week ago

CLOVIS-AI commented 1 week ago

Is your feature request related to a problem? Please describe

I am creating a custom Dokka output format. More specifically, I'm embedding Dokka into an MkDocs website.

Since I created a custom format, Dokka generates a task that creates all the files. But I need them to be in a specific directory. I want to recursively access all generated files.

At the moment, the best way to do so seems to be to declare a dependency on the configuration dokkaMkdocsModuleOutputDirectoriesResolver~internal, which I do here and is used in the Sync task declared just below.

Describe the solution you'd like

A way to access all the files that were outputted by my custom format, across any project registered in the current project through dependencies { dokka(…) }.

Describe alternatives you've considered

I don't know what's possible here.

adam-enko commented 6 days ago

Hi, thanks for the request.

I see the difficulty, and while I don't have the time right now to have a thorough look, I have a suggestion: Could you try accessing the files from the DokkaFormatPluginContext instead?

abstract class DokkaMkDocsPlugin : DokkaFormatPlugin(formatName = "mkdocs") {

    @OptIn(DokkaInternalApi::class)
    override fun DokkaFormatPluginContext.configure() {
        val moduleOutputFiles = formatDependencies.moduleOutputDirectories.incomingArtifactFiles

        // ...
    }

    // ...
}