plugins-dist.md 2,84 Kio
Extensions d'une distribution SPIP
Arborescence
SPIP4.4
.
├── composer.json
├── composer.lock
├── plugins-dist
│ ├── aide
│ ├── ...
│ └── urls_etendues
└── plugins-dist.json
SPIP5
.
├── composer.json
├── composer.lock
├── plugins-dist
└── spip
├── aide
├── ...
└── urls
Historique
Le fichier ./plugins-dist.json
est construit comme ci-dessous :
{
"prefix": {
"path": "plugins-dist/prefix",
"source": "https://git.spip.net/spip/prefix.git",
"branch": "x.y",
"tag": "vx.y.z",
},
"..." : {
"path": "...",
"source": "...",
"...": "..."
}
}
path
et source
sont obligatoires. branch
et tag
sont facultatifs.
Chaque entrée de ce fichier peut être normalisé dans une instance de la classe Specification.
L'ensemble des plugins-dist est normalisé dans une instance de la classe Collection, capable de se construire à partir d'un fichier valide ou de générer un fichier valide.
Composerisation
composer.json
du projet (racine):
{
"require": {
"spip/prefix": "...",
"...": "..."
},
"extra": {
"spip": {
"extensions": [
"spip/prefix",
"..."
]
}
}
}
composer.json
d'un plugin-dist spip:
{
"name": "spip/prefix",
"type": "spip-plugin",
"...": "..."
}
Bascule
Forward 4.4->5
Analyse forward
- pour tout prefix présent dans plugins-dist.json:
- si existence plugins-dist/prefix, marquer le dossier plugins-dist/prefix pour suppression
- marquer vendor/prefix dans extra.spip.extensions pour ajout si absent
- marquer vendor/prefix:constraint dans require pour ajout si absent
- marquer prefix dans plugins-dist.json pour suppression
Switch forward
- mettre à jour require et extensions avec les vendor/prefix:constraint marqués
- supprimer les dossiers plugins-dist/prefix marqués
- supprimer les prefix marqués dans plugins-dist.json
- si plugins-dist.json vide, le supprimer
- composer update
Back 5->4.4
Analyse back
- pour tout prefix présent dans extra.spip.extensions:
- si installé, convertir en spécification 4.4 et marquer prefix/path/source/branch/tag pour ajout à plugins-dist.json
- marquer vendor/prefix dans extra.spip.extensions pour suppression
- marquer vendor/prefix:constraint dans require si présent pour suppression
- marquer le dossier plugins-dist/vendor pour suppression
Switch back
- pour tout plugins-dist/vendor marqués, supprimer si vide
- générer plugins-dist.json
- composer update
Reprendre l'usage des outils historiques