Pour tout problème contactez-nous par mail : support@froggit.fr | La FAQ :grey_question: | Rejoignez-nous sur le Chat :speech_balloon:

Skip to content
Snippets Groups Projects
Commit 5b4021d7 authored by Vercingecodix's avatar Vercingecodix :infinity:
Browse files

Merge branch '2-rendre-l-extension-paresseuse' into 'main'

Rendre l'extension paresseuse

Closes #2

See merge request !2
parents 9027b8a4 3689de49
No related branches found
No related tags found
1 merge request!2Rendre l'extension paresseuse
Pipeline #61744 passed
package dev.arvernes.fetch.published.maven.zips.domain.models
import org.gradle.api.model.ObjectFactory
import org.gradle.api.provider.ListProperty
import org.gradle.api.provider.Property
import javax.inject.Inject
/**
* Extension de configuration pour le plugin `fetchPublishedMavenZips`.
*
* Permet de définir les paramètres nécessaires pour télécharger, filtrer
* et extraire automatiquement des fichiers ZIP publiés dans un repository Maven.
*/
open class FetchPublishedMavenZipsPluginExtension {
abstract class FetchPublishedMavenZipsPluginExtension @Inject constructor(objects: ObjectFactory) {
/**
* Group ID du module Maven.
* Exemple : `"dev.arvernes"`
*/
var groupId: String? = null
val groupId: Property<String> = objects.property(String::class.java)
/**
* Artifact ID du module Maven.
* Exemple : `"ma-lib"`
*/
var artifactId: String? = null
val artifactId: Property<String> = objects.property(String::class.java)
/**
* URL du repository Maven distant (GitLab, Nexus, Artifactory...).
* Exemple : `"https://repo.exemple.com/releases"`
*/
var mavenRepository: String? = null
val mavenRepository: Property<String> = objects.property(String::class.java)
/**
* Nom de base des archives ZIP à récupérer (sans suffixe de version ni extension).
* Exemple : `"zipped"` → récupère des fichiers comme `zipped-1.0.0.zip`.
* Par défaut : `"zipped"`
*/
var zipBaseName: String = "zipped"
val zipBaseName: Property<String> = objects.property(String::class.java)
.convention("zipped")
/**
* Liste des versions Maven à ignorer lors du téléchargement.
*/
var excludeVersions: List<String> = emptyList()
val excludeVersions: ListProperty<String> = objects.listProperty(String::class.java)
.convention(emptyList())
/**
* Jeton d'authentification pour accéder aux repositories privés.
* Si null ou vide, aucune authentification n'est appliquée.
*/
var mavenToken: String? = null
val mavenToken: Property<String> = objects.property(String::class.java)
/**
* Chemin temporaire (relatif à rootProject) où les fichiers ZIP seront téléchargés.
* Exemple : `"build/tmp/zips"`
*/
var outputTempPath: String? = null
val outputTempPath: Property<String> = objects.property(String::class.java)
/**
* Chemin final (relatif à rootProject) où les fichiers seront extraits.
* Exemple : `"build/extracted/versions"`
*/
var outputExtractedPath: String? = null
val outputExtractedPath: Property<String> = objects.property(String::class.java)
}
......@@ -32,17 +32,17 @@ class FetchPublishedMavenZipsPlugin : Plugin<Project> {
val client = JavaHttpClient()
val directories = ZippedDirectories(
project.rootProject.file(extension.outputTempPath ?: throw RuntimeException("outputTempPath manquant")),
project.rootProject.file(extension.outputExtractedPath ?: throw RuntimeException("outputExtractedPath manquant"))
project.rootProject.file(extension.outputTempPath.orNull ?: error("outputTempPath manquant")),
project.rootProject.file(extension.outputExtractedPath.orNull ?: error("outputExtractedPath manquant"))
)
val repository = MavenZipsRepository(
extension.mavenRepository ?: throw RuntimeException("mavenRepository manquant"),
extension.groupId ?: throw RuntimeException("groupId manquant"),
extension.artifactId ?: throw RuntimeException("artifactId manquant"),
extension.zipBaseName,
extension.mavenToken.orEmpty(), // token optionnel
extension.excludeVersions,
extension.mavenRepository.orNull ?: throw RuntimeException("mavenRepository manquant"),
extension.groupId.orNull ?: throw RuntimeException("groupId manquant"),
extension.artifactId.orNull ?: throw RuntimeException("artifactId manquant"),
extension.zipBaseName.get(),
extension.mavenToken.getOrElse(""),
extension.excludeVersions.getOrElse(emptyList()),
)
// 1. Nettoyage des anciennes versions extraites
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment