Newer
Older
<p align="center">
<img src="./logo.png" alt="logo" width="100"/>
</p>



Vercingecodix
committed
Plugin Gradle pour **télécharger automatiquement des archives ZIP publiées sur un repository Maven**, les extraire localement, et nettoyer les anciennes versions.

Vercingecodix
committed
> ⚡️ Idéal pour maintenir une documentation versionnée issue d’artefacts Maven (`zipped-1.2.3.zip`, etc.).

Vercingecodix
committed
Ajoute le dépôt dans `settings.gradle.kts` :
```kotlin
pluginManagement {
repositories {
maven(uri("https://lab.frogg.it/api/v4/projects/1987/packages/maven"))
}
}

Vercingecodix
committed
Applique le plugin dans `build.gradle.kts` :
id("dev.arvernes.fetch-published-maven-zips") version "2.1.1"

Vercingecodix
committed
ou via `libs.versions.toml` :
fetch-published-maven-docs = { id = "dev.arvernes.fetch-published-maven-zips", version = "2.1.1" }

Vercingecodix
committed
Configure le plugin dans le bloc `fetchMavenZips` :
```kotlin
fetchMavenZips {
groupId = "dev.arvernes"
artifactId = "ma-lib"
zipBaseName = "htmlDoc" // par défaut : "zipped"

Vercingecodix
committed
mavenRepository = "https://my.maven.repo/releases"
mavenTokenProperty = "MY_MAVEN_TOKEN" // optionnel, par défaut : null
outputTempPath = "build/tmp/docs" // dossier temporaire pour les ZIP

Vercingecodix
committed
outputExtractedPath = "build/docs/versions" // destination finale

Vercingecodix
committed
## 📦 Utilisation

Vercingecodix
committed
Cette tâche effectue les actions suivantes :

Vercingecodix
committed
1. Nettoyage des anciennes archives extraites (`outputExtractedPath`).
2. Récupération des versions disponibles sur le repository Maven.
3. Téléchargement des archives `zipped-<version>.zip`.
4. Décompression des archives dans `outputExtractedPath`.
5. Suppression des fichiers `.zip` temporaires.

Vercingecodix
committed
## 🔐 Gestion sécurisée du token
Le token d’authentification est récupéré depuis :
- Une **variable d'environnement** (`MY_MAVEN_TOKEN` par défaut).
- Ou une **propriété Gradle** définie dans `gradle.properties` local (à ne pas commiter).
Exemple :
```properties
# gradle.properties (exclu du versionnement)
MY_MAVEN_TOKEN=ton_token_secret
```

Vercingecodix
committed
ou

Vercingecodix
committed
```bash
export MY_MAVEN_TOKEN=ton_token_secret
```
```
build/docs/versions/
├── 1.0.0/
│ └── index.html
├── 1.1.0/
│ └── index.html
└── ...
```
```kotlin
plugins {
id("dev.arvernes.fetch-published-maven-zips") version "1.0.0"
}

Vercingecodix
committed
fetchMavenZips {
groupId = "dev.arvernes"
artifactId = "secure-password"
zipBaseName = "htmlDoc"

Vercingecodix
committed
mavenRepository = "https://lab.frogg.it/api/v4/projects/1234/packages/maven"
mavenTokenProperty = "FROGGIT_TOKEN"
outputTempPath = "build/tmp/docs"
outputExtractedPath = "build/docs/versions"
}
```
```
.
├── domain/models/ ← Modèles de config (extension, repository)
├── application/usecases/ ← Logique métier (clean, download, unzip)
├── adapters/ ← Implémentation technique (HTTP client)
└── platform/gradle/ ← Entrée plugin : FetchPublishedMavenZipsPlugin
```