aboutsummaryrefslogtreecommitdiff
path: root/runners/maven-plugin/src/main/kotlin/PackageOptions.kt
blob: 875fb0476b5d18e00657928c97a9bd46f06970b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/*
 * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
 */

package org.jetbrains.dokka.maven

import org.apache.maven.plugins.annotations.Parameter
import org.jetbrains.dokka.DokkaConfiguration
import org.jetbrains.dokka.DokkaDefaults

/**
 * Configuration block that allows setting some options for specific packages
 * matched by [matchingRegex].
 *
 * Example:
 *
 * ```xml
 * <configuration>
 *     <perPackageOptions>
 *         <packageOptions>
 *             <matchingRegex>.*api.*</matchingRegex>
 *             <suppress>false</suppress>
 *             <reportUndocumented>false</reportUndocumented>
 *             <skipDeprecated>false</skipDeprecated>
 *             <documentedVisibilities>
 *                 <visibility>PUBLIC</visibility>
 *                 <visibility>PROTECTED</visibility>
 *             </documentedVisibilities>
 *         </packageOptions>
 *     </perPackageOptions>
 * </configuration>
 * ```
 */
public class PackageOptions : DokkaConfiguration.PackageOptions {

    /**
     * Regular expression that is used to match the package.
     *
     * If multiple packages match the same `matchingRegex`, the longest `matchingRegex` will be used.
     *
     * Default is any string: `.*`.
     */
    @Parameter
    override var matchingRegex: String = ".*"

    /**
     * Whether this package should be skipped when generating documentation.
     *
     * Default is `false`.
     */
    @Parameter
    override var suppress: Boolean = DokkaDefaults.suppress

    /**
     * List of visibility modifiers that should be documented.
     *
     * This can be used if you want to document protected/internal/private declarations within a
     * specific package, as well as if you want to exclude public declarations and only document internal API.
     *
     * Default is [DokkaConfiguration.Visibility.PUBLIC].
     */
    @Parameter(property = "visibility")
    override var documentedVisibilities: Set<DokkaConfiguration.Visibility> = DokkaDefaults.documentedVisibilities

    /**
     * Whether to document declarations annotated with [Deprecated].
     *
     * Can be set on project level with [AbstractDokkaMojo.skipDeprecated].
     *
     * Default is `false`.
     */
    @Parameter
    override var skipDeprecated: Boolean = DokkaDefaults.skipDeprecated

    /**
     * Whether to emit warnings about visible undocumented declarations, that is declarations from
     * this package and without KDocs, after they have been filtered by [documentedVisibilities].
     *
     * This setting works well with [AbstractDokkaMojo.failOnWarning].
     *
     * Default is `false`.
     */
    @Parameter
    override var reportUndocumented: Boolean = DokkaDefaults.reportUndocumented

    @Parameter
    @Deprecated("Use [documentedVisibilities] property for a more flexible control over documented visibilities")
    override var includeNonPublic: Boolean = DokkaDefaults.includeNonPublic
}