
net.nemerosa.ontrack.extension.stash.catalog.BitbucketSCMCatalogProvider.kt Maven / Gradle / Ivy
package net.nemerosa.ontrack.extension.stash.catalog
import net.nemerosa.ontrack.extension.scm.catalog.SCMCatalogEntry
import net.nemerosa.ontrack.extension.scm.catalog.SCMCatalogProvider
import net.nemerosa.ontrack.extension.scm.catalog.SCMCatalogSource
import net.nemerosa.ontrack.extension.stash.client.BitbucketClientFactory
import net.nemerosa.ontrack.extension.stash.property.StashProjectConfigurationProperty
import net.nemerosa.ontrack.extension.stash.property.StashProjectConfigurationPropertyType
import net.nemerosa.ontrack.extension.stash.service.StashConfigurationService
import net.nemerosa.ontrack.model.structure.Project
import net.nemerosa.ontrack.model.structure.PropertyService
import org.springframework.stereotype.Component
@Component
class BitbucketSCMCatalogProvider(
private val stashConfigurationService: StashConfigurationService,
private val bitbucketClientFactory: BitbucketClientFactory,
private val propertyService: PropertyService
) : SCMCatalogProvider {
override val id: String = "bitbucket"
override val entries: List
get() = stashConfigurationService
.configurations
.flatMap { config ->
val client = bitbucketClientFactory.getBitbucketClient(config)
client.projects.flatMap { project ->
client.getRepositories(project)
}.map { repo ->
SCMCatalogSource(
config = config.name,
repository = "${repo.project}/${repo.repository}",
repositoryPage = StashProjectConfigurationProperty(config, repo.project, repo.repository, 0, null).repositoryUrl
)
}
}
override fun matches(entry: SCMCatalogEntry, project: Project): Boolean {
val property: StashProjectConfigurationProperty? = propertyService.getProperty(project, StashProjectConfigurationPropertyType::class.java).value
return property != null &&
property.configuration.name == entry.config &&
"${property.project}/${property.repository}" == entry.repository
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy