Le module xcraft-core-devel fournit des outils d'aide au développement pour l'écosystème Xcraft. Il propose principalement des fonctionnalités pour appliquer des patches à des fichiers source, facilitant ainsi la maintenance et l'adaptation du code selon les plateformes et distributions.
- Structure du module
- Fonctionnement global
- Exemples d'utilisation
- Interactions avec d'autres modules
- Détails des sources
- Conventions de nommage des patches
- Fonctionnement technique
Le module est composé de deux fonctions principales :
patch: Applique un fichier de patch spécifique à un répertoire sourceautoPatch: Applique automatiquement une série de patches en fonction de critères comme la plateforme ou la distribution
Ce module facilite le développement en permettant :
- L'application de patches individuels sur des fichiers source
- L'application automatique de patches en fonction de la plateforme ou de la distribution
- Le traitement ordonné des patches grâce à un système de nommage spécifique
Le module utilise la commande système patch et gère les flux de sortie pour fournir des informations détaillées sur le processus d'application des patches.
const devel = require('xcraft-core-devel');
// Appliquer un patch spécifique
devel.patch(
'/chemin/vers/sources',
'/chemin/vers/mon-patch.patch',
1,
this.quest.resp,
(err) => {
if (err) {
console.error("Échec de l'application du patch:", err);
} else {
console.log('Patch appliqué avec succès');
}
}
);const devel = require('xcraft-core-devel');
// Appliquer automatiquement tous les patches pertinents
devel.autoPatch(
'/chemin/vers/patches',
'/chemin/vers/sources',
'debian',
this.quest.resp,
(err) => {
if (err) {
console.error("Échec de l'application des patches:", err);
} else {
console.log('Tous les patches ont été appliqués avec succès');
}
}
);Ce module interagit avec :
- xcraft-core-fs : Pour la manipulation de fichiers et répertoires
- xcraft-core-platform : Pour la détection de la plateforme d'exécution
Ce fichier expose les fonctions principales pour l'application de patches.
-
patch(srcDir, patchFile, stripNum, resp, callback)- Applique un fichier de patch spécifique à un répertoire source. La fonction utilise la commande systèmepatchet redirige les sorties standard et d'erreur vers les fonctions de log fournies dans l'objetresp.srcDir: Répertoire source où appliquer le patchpatchFile: Chemin vers le fichier de patch à appliquerstripNum: Nombre de segments de chemin à ignorer (option-pde la commande patch)resp: Contexte de réponse de quête Xcraftcallback: Fonction appelée à la fin avec une erreur ou null
-
autoPatch(patchesDir, srcDir, distribution, resp, callback)- Applique automatiquement tous les patches pertinents d'un répertoire à un répertoire source. Les patches sont appliqués dans l'ordre alphabétique et peuvent être spécifiques à une plateforme ou une distribution.patchesDir: Répertoire contenant les fichiers de patchsrcDir: Répertoire source où appliquer les patchesdistribution: Distribution cible (ex: 'debian')resp: Contexte de réponse de quête Xcraftcallback: Fonction appelée à la fin avec une erreur ou null
Les patches doivent suivre une convention de nommage spécifique pour être reconnus par la fonction autoPatch :
- Préfixe numérique (ex:
001-fix-bug.patch) : Patch générique applicable à toutes les plateformes - Préfixe de plateforme (ex:
linux-fix-bug.patch) : Patch spécifique à une plateforme - Préfixe de distribution (ex:
debian-fix-bug.patch) : Patch spécifique à une distribution
Les patches sont appliqués dans l'ordre alphabétique, ce qui permet de contrôler leur séquence d'application.
- La fonction
patchchange d'abord le répertoire courant vers le répertoire source - Elle lance ensuite la commande système
patchavec l'option-pappropriée - Le contenu du fichier de patch est envoyé à l'entrée standard de la commande
- Les sorties standard et d'erreur sont capturées et redirigées vers les fonctions de log
- Une fois le processus terminé, la fonction restaure le répertoire courant et appelle le callback
La fonction autoPatch utilise une expression régulière pour sélectionner les patches pertinents :
- Patches avec un préfixe numérique
- Patches spécifiques à la plateforme actuelle (détectée via
xcraft-core-platform) - Patches spécifiques à la distribution fournie en paramètre
Les patches sélectionnés sont ensuite triés alphabétiquement et appliqués séquentiellement.
Cette documentation a été mise à jour automatiquement.