Skip to content

Commit 5f9e80b

Browse files
committed
feat(workers): Parse GradleDefinitions from .ort.env.yml file
Extend the `EnvironmentDefinitionFactory` to support creating `GradleDefinition` instances from the `.ort.env.yml` file. Signed-off-by: Onur Demirci <[email protected]>
1 parent 8b23b10 commit 5f9e80b

File tree

3 files changed

+50
-0
lines changed

3 files changed

+50
-0
lines changed

workers/common/src/main/kotlin/common/env/config/EnvironmentDefinitionFactory.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import org.eclipse.apoapsis.ortserver.model.CredentialsType
2525
import org.eclipse.apoapsis.ortserver.model.InfrastructureService
2626
import org.eclipse.apoapsis.ortserver.workers.common.env.definition.ConanDefinition
2727
import org.eclipse.apoapsis.ortserver.workers.common.env.definition.EnvironmentServiceDefinition
28+
import org.eclipse.apoapsis.ortserver.workers.common.env.definition.GradleDefinition
2829
import org.eclipse.apoapsis.ortserver.workers.common.env.definition.MavenDefinition
2930
import org.eclipse.apoapsis.ortserver.workers.common.env.definition.NpmAuthMode
3031
import org.eclipse.apoapsis.ortserver.workers.common.env.definition.NpmDefinition
@@ -42,6 +43,9 @@ class EnvironmentDefinitionFactory {
4243
/** The name for the [ConanDefinition] type. */
4344
const val CONAN_TYPE = "conan"
4445

46+
/** The name for the [GradleDefinition] type. */
47+
const val GRADLE_TYPE = "gradle"
48+
4549
/** The name for the [MavenDefinition] type. */
4650
const val MAVEN_TYPE = "maven"
4751

@@ -75,6 +79,7 @@ class EnvironmentDefinitionFactory {
7579
): Result<EnvironmentServiceDefinition> =
7680
when (type) {
7781
CONAN_TYPE -> createConanDefinition(service, DefinitionProperties(properties))
82+
GRADLE_TYPE -> createGradleDefinition(service, DefinitionProperties(properties))
7883
MAVEN_TYPE -> createMavenDefinition(service, DefinitionProperties(properties))
7984
NPM_TYPE -> createNpmDefinition(service, DefinitionProperties(properties))
8085
NUGET_TYPE -> createNuGetDefinition(service, DefinitionProperties(properties))
@@ -99,6 +104,18 @@ class EnvironmentDefinitionFactory {
99104
)
100105
}
101106

107+
/**
108+
* Create a definition for the _init.gradle.kts_ configuration file of Gradle with the given [service] and
109+
* [properties].
110+
*/
111+
private fun createGradleDefinition(
112+
service: InfrastructureService,
113+
properties: DefinitionProperties
114+
): Result<EnvironmentServiceDefinition> =
115+
properties.withRequiredProperties {
116+
GradleDefinition(service, credentialsTypes())
117+
}
118+
102119
/**
103120
* Create a definition for Maven's _settings.xml_ file with the given [service] and [properties].
104121
*/

workers/common/src/test/kotlin/common/env/config/EnvironmentDefinitionFactoryTest.kt

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import org.eclipse.apoapsis.ortserver.workers.common.common.env.REMOTE_NAME
3939
import org.eclipse.apoapsis.ortserver.workers.common.common.env.REMOTE_URL
4040
import org.eclipse.apoapsis.ortserver.workers.common.env.definition.ConanDefinition
4141
import org.eclipse.apoapsis.ortserver.workers.common.env.definition.EnvironmentServiceDefinition
42+
import org.eclipse.apoapsis.ortserver.workers.common.env.definition.GradleDefinition
4243
import org.eclipse.apoapsis.ortserver.workers.common.env.definition.MavenDefinition
4344
import org.eclipse.apoapsis.ortserver.workers.common.env.definition.NpmAuthMode
4445
import org.eclipse.apoapsis.ortserver.workers.common.env.definition.NpmDefinition
@@ -451,6 +452,36 @@ class EnvironmentDefinitionFactoryTest : WordSpec() {
451452
definition.credentialsTypes() shouldBe EnumSet.of(CredentialsType.GIT_CREDENTIALS_FILE)
452453
}
453454
}
455+
456+
"A GradleDefinition" should {
457+
"be created successfully" {
458+
val definition = createSuccessful(EnvironmentDefinitionFactory.GRADLE_TYPE, emptyMap())
459+
460+
definition.shouldBeInstanceOf<GradleDefinition>()
461+
}
462+
463+
"fail if there are unsupported properties" {
464+
val unsupportedProperty1 = "anotherProperty"
465+
val unsupportedProperty2 = "oneMoreUnsupportedProperty"
466+
val properties =
467+
mapOf(unsupportedProperty1 to "bar", unsupportedProperty2 to "baz")
468+
469+
val exception = createFailed(EnvironmentDefinitionFactory.GRADLE_TYPE, properties)
470+
471+
exception.message shouldContain "'$unsupportedProperty1'"
472+
exception.message shouldContain "'$unsupportedProperty2'"
473+
}
474+
475+
"allow overriding the credentials types" {
476+
val properties = mapOf(
477+
EnvironmentDefinitionFactory.CREDENTIALS_TYPE_PROPERTY to "GIT_CREDENTIALS_FILE"
478+
)
479+
480+
val definition = createSuccessful(EnvironmentDefinitionFactory.GRADLE_TYPE, properties)
481+
482+
definition.credentialsTypes() shouldBe EnumSet.of(CredentialsType.GIT_CREDENTIALS_FILE)
483+
}
484+
}
454485
}
455486

456487
/**

workers/common/src/test/resources/.ort.env.all-options.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ environmentDefinitions:
2828
name: "conan-center"
2929
url: "https://conan.example.org/api/v1"
3030
verifySsl: true
31+
gradle:
32+
- service: "example-maven-central"
3133
maven:
3234
- service: "example-maven-central"
3335
id: "central"

0 commit comments

Comments
 (0)