diff --git a/model/src/main/resources/reference.yml b/model/src/main/resources/reference.yml index e25f6407a246f..a036bb4446237 100644 --- a/model/src/main/resources/reference.yml +++ b/model/src/main/resources/reference.yml @@ -268,7 +268,7 @@ ort: timeout: 60 - urlMappingExample: "https://my-repo.example.org(?.*) -> ssh://my-mapped-repo.example.org${repoPath}" + urlMappings: "https://my-repo.example.org(?.*) -> ssh://my-mapped-repo.example.org${repoPath}" sensitivity: 10 diff --git a/model/src/test/kotlin/config/OrtConfigurationTest.kt b/model/src/test/kotlin/config/OrtConfigurationTest.kt index e62445449d6f5..92174a372d9a6 100644 --- a/model/src/test/kotlin/config/OrtConfigurationTest.kt +++ b/model/src/test/kotlin/config/OrtConfigurationTest.kt @@ -264,7 +264,7 @@ class OrtConfigurationTest : WordSpec({ "detectLicenseDeclarations" to "true", "detectCopyrightStatements" to "true", "timeout" to "60", - "urlMappingExample" to urlMapping, + "urlMappings" to urlMapping, "sensitivity" to "10" ) diff --git a/plugins/scanners/fossid/src/main/kotlin/FossIdConfig.kt b/plugins/scanners/fossid/src/main/kotlin/FossIdConfig.kt index 8ee79101f7933..4f63433ed8b94 100644 --- a/plugins/scanners/fossid/src/main/kotlin/FossIdConfig.kt +++ b/plugins/scanners/fossid/src/main/kotlin/FossIdConfig.kt @@ -115,6 +115,9 @@ data class FossIdConfig( /** The sensitivity of the scan. */ val sensitivity: Int, + /** A comma-separated list of URL mappings. */ + val urlMappings: String?, + /** Stores the map with FossID-specific configuration options. */ private val options: Map ) { @@ -162,6 +165,9 @@ data class FossIdConfig( /** Name of the configuration property defining the sensitivity of the scan. */ private const val PROP_SENSITIVITY = "sensitivity" + /** Name of the configuration property defining the URL mappings. */ + private const val PROP_URL_MAPPINGS = "urlMappings" + /** * Default timeout in minutes for communication with FossID. */ @@ -208,6 +214,8 @@ data class FossIdConfig( val sensitivity = options[PROP_SENSITIVITY]?.toInt() ?: DEFAULT_SENSITIVITY + val urlMappings = options[PROP_URL_MAPPINGS] + require(deltaScanLimit > 0) { "deltaScanLimit must be > 0, current value is $deltaScanLimit." } @@ -233,7 +241,8 @@ data class FossIdConfig( fetchSnippetMatchedLines = fetchSnippetMatchedLines, options = options, snippetsLimit = snippetsLimit, - sensitivity = sensitivity + sensitivity = sensitivity, + urlMappings = urlMappings, ) } } @@ -252,5 +261,5 @@ data class FossIdConfig( /** * Create a [FossIdUrlProvider] helper object based on the configuration stored in this object. */ - fun createUrlProvider() = FossIdUrlProvider.create(options) + fun createUrlProvider() = FossIdUrlProvider.create(urlMappings?.split(',').orEmpty()) } diff --git a/plugins/scanners/fossid/src/main/kotlin/FossIdUrlProvider.kt b/plugins/scanners/fossid/src/main/kotlin/FossIdUrlProvider.kt index 9bf129ef71eeb..b9d97a6fe51cc 100644 --- a/plugins/scanners/fossid/src/main/kotlin/FossIdUrlProvider.kt +++ b/plugins/scanners/fossid/src/main/kotlin/FossIdUrlProvider.kt @@ -73,13 +73,6 @@ class FossIdUrlProvider private constructor( return FossIdUrlProvider(mappings) } - /** - * Create a new instance of [FossIdUrlProvider] and configure the URL mappings from the given configuration - * [options]. - */ - fun create(options: Map): FossIdUrlProvider = - create(options.filter { it.key.startsWith(PREFIX_URL_MAPPING) }.values) - /** * Try to fetch credentials for [repoUrl] from the current [Authenticator]. Return *null* if no matching host * is found. diff --git a/plugins/scanners/fossid/src/test/kotlin/FossIdConfigTest.kt b/plugins/scanners/fossid/src/test/kotlin/FossIdConfigTest.kt index 92370e01242c8..a23a4ab8f07bd 100644 --- a/plugins/scanners/fossid/src/test/kotlin/FossIdConfigTest.kt +++ b/plugins/scanners/fossid/src/test/kotlin/FossIdConfigTest.kt @@ -52,7 +52,8 @@ class FossIdConfigTest : WordSpec({ "detectCopyrightStatements" to "true", "timeout" to "300", "fetchSnippetMatchedLines" to "true", - "snippetsLimit" to "1000" + "snippetsLimit" to "1000", + "urlMappings" to "https://example.org(?.*) -> ssh://example.org\${repoPath}" ) val secrets = mapOf( @@ -77,7 +78,8 @@ class FossIdConfigTest : WordSpec({ fetchSnippetMatchedLines = true, options = options, snippetsLimit = 1000, - sensitivity = 10 + sensitivity = 10, + urlMappings = "https://example.org(?.*) -> ssh://example.org\${repoPath}" ) } @@ -106,7 +108,8 @@ class FossIdConfigTest : WordSpec({ fetchSnippetMatchedLines = false, options = options, snippetsLimit = 500, - sensitivity = 10 + sensitivity = 10, + urlMappings = null ) } @@ -188,7 +191,7 @@ class FossIdConfigTest : WordSpec({ val url = "https://changeit.example.org/foo" val options = mapOf( "serverUrl" to SERVER_URL, - "urlMappingChangeHost" to "$url -> $SERVER_URL" + "urlMappings" to "$url -> $SERVER_URL" ) val secrets = mapOf( diff --git a/plugins/scanners/fossid/src/test/kotlin/TestUtils.kt b/plugins/scanners/fossid/src/test/kotlin/TestUtils.kt index 48da0e2a609b0..5346c26699991 100644 --- a/plugins/scanners/fossid/src/test/kotlin/TestUtils.kt +++ b/plugins/scanners/fossid/src/test/kotlin/TestUtils.kt @@ -140,7 +140,8 @@ internal fun createConfig( fetchSnippetMatchedLines = fetchSnippetMatchedLines, options = emptyMap(), snippetsLimit = snippetsLimit, - sensitivity = 10 + sensitivity = 10, + urlMappings = null ) val namingProvider = createNamingProviderMock()