Skip to content

Commit

Permalink
Add --plugins option to gradle plugin - Fixes #545
Browse files Browse the repository at this point in the history
  • Loading branch information
arturbosch committed Nov 20, 2017
1 parent 2461232 commit 55cf20e
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 25 deletions.
Expand Up @@ -6,13 +6,14 @@ package io.gitlab.arturbosch.detekt.extensions

const val DETEKT_PROFILE = "detekt.profile"
const val SUPPORTED_DETEKT_VERSION = "latest.release"
const val DEBUG_PARAMETER = false
const val DEFAULT_DEBUG_VALUE = false

const val DEFAULT_PROFILE_NAME = "main"
const val DEFAULT_TRUE = "true"
const val DEFAULT_DETEKT_CONFIG_RESOURCE = "/default-detekt-config.yml"
const val DEFAULT_PATH_EXCLUDES = ".*/test/.*,.*/resources/.*,.*/build/.*,.*/target/.*"

const val DEBUG_PARAMETER = "--debug"
const val CONFIG_RESOURCE_PARAMETER = "--config-resource"
const val FILTERS_PARAMETER = "--filters"
const val INPUT_PARAMETER = "--input"
Expand All @@ -23,3 +24,4 @@ const val OUTPUT_NAME_PARAMETER = "--output-name"
const val BASELINE_PARAMETER = "--baseline"
const val PARALLEL_PARAMETER = "--parallel"
const val DISABLE_DEFAULT_RULESETS_PARAMETER = "--disable-default-rulesets"
const val PLUGINS_PARAMETER = "--plugins"
Expand Up @@ -7,7 +7,7 @@ import org.gradle.api.Project
* @author Artur Bosch
*/
open class DetektExtension(open var version: String = SUPPORTED_DETEKT_VERSION,
open var debug: Boolean = DEBUG_PARAMETER,
open var debug: Boolean = DEFAULT_DEBUG_VALUE,
open var profile: String = DEFAULT_PROFILE_NAME,
open var ideaExtension: IdeaExtension = IdeaExtension()) {

Expand Down Expand Up @@ -45,16 +45,20 @@ open class DetektExtension(open var version: String = SUPPORTED_DETEKT_VERSION,
private fun createArgumentsForProfile(): MutableList<String> {
val defaultProfile = getDefaultProfile()
val systemProfile = getSystemProfile()
val mainProfile = if (defaultProfile?.name != MAIN_PROFILE_NAME && systemProfile?.name != MAIN_PROFILE_NAME) {
searchProfileWithName(MAIN_PROFILE_NAME)
} else null
val mainProfile =
if (defaultProfile?.name != DEFAULT_PROFILE_NAME && systemProfile?.name != DEFAULT_PROFILE_NAME) {
searchProfileWithName(DEFAULT_PROFILE_NAME)
} else {
null
}

val allArguments = mainProfile?.arguments(debug) ?: mutableMapOf()
val defaultArguments = defaultProfile?.arguments(debug) ?: mutableMapOf()
val fallbackEmptyArguments = mutableMapOf<String, String>()

val overriddenArguments = if (systemProfile?.name == defaultProfile?.name) fallbackEmptyArguments
else systemProfile?.arguments(debug) ?: fallbackEmptyArguments
val overriddenArguments =
if (systemProfile?.name == defaultProfile?.name) fallbackEmptyArguments
else systemProfile?.arguments(debug) ?: fallbackEmptyArguments

defaultArguments.merge(allArguments)
overriddenArguments.merge(allArguments)
Expand All @@ -79,8 +83,6 @@ open class DetektExtension(open var version: String = SUPPORTED_DETEKT_VERSION,
"debug=$debug, profile='$profile', ideaExtension=$ideaExtension, profiles=$profiles)"
}

private val MAIN_PROFILE_NAME = "main"

private fun MutableMap<String, String>.merge(other: MutableMap<String, String>) {
for ((key, value) in this) {
other.merge(key, value) { v1, v2 ->
Expand Down
Expand Up @@ -3,7 +3,7 @@ package io.gitlab.arturbosch.detekt.extensions
/**
* @author Artur Bosch
*/
@Suppress("LongParameterList")
@Suppress("LongParameterList", "ComplexMethod")
open class ProfileExtension(val name: String,
open var input: String? = null,
open var config: String? = null,
Expand All @@ -14,22 +14,22 @@ open class ProfileExtension(val name: String,
open var outputName: String? = null,
open var baseline: String? = null,
open var parallel: Boolean = false,
open var disableDefaultRuleSets: Boolean = false) {
open var disableDefaultRuleSets: Boolean = false,
open var plugins: String? = null) {

fun arguments(debug: Boolean = false): MutableMap<String, String> {
return mutableMapOf<String, String>().apply {
input?.let { put(INPUT_PARAMETER, it) }
config?.let { put(CONFIG_PARAMETER, it) }
configResource?.let { put(CONFIG_RESOURCE_PARAMETER, it) }
filters?.let { put(FILTERS_PARAMETER, it) }
ruleSets?.let { put(RULES_PARAMETER, it) }
output?.let { put(OUTPUT_PARAMETER, it) }
outputName?.let { put(OUTPUT_NAME_PARAMETER, it) }
baseline?.let { put(BASELINE_PARAMETER, it) }
if (parallel) put(PARALLEL_PARAMETER, DEFAULT_TRUE)
if (disableDefaultRuleSets) put(DISABLE_DEFAULT_RULESETS_PARAMETER, DEFAULT_TRUE)
if (debug) put("--debug", DEFAULT_TRUE)
}
fun arguments(debug: Boolean = false) = mutableMapOf<String, String>().apply {
input?.let { put(INPUT_PARAMETER, it) }
config?.let { put(CONFIG_PARAMETER, it) }
configResource?.let { put(CONFIG_RESOURCE_PARAMETER, it) }
filters?.let { put(FILTERS_PARAMETER, it) }
ruleSets?.let { put(RULES_PARAMETER, it) }
output?.let { put(OUTPUT_PARAMETER, it) }
outputName?.let { put(OUTPUT_NAME_PARAMETER, it) }
baseline?.let { put(BASELINE_PARAMETER, it) }
plugins?.let { put(PLUGINS_PARAMETER, it) }
if (parallel) put(PARALLEL_PARAMETER, DEFAULT_TRUE)
if (disableDefaultRuleSets) put(DISABLE_DEFAULT_RULESETS_PARAMETER, DEFAULT_TRUE)
if (debug) put(DEBUG_PARAMETER, DEFAULT_TRUE)
}

override fun toString(): String = "ProfileExtension(name='$name', input=$input, config=$config, " +
Expand Down

0 comments on commit 55cf20e

Please sign in to comment.