correctifs
This commit is contained in:
parent
8304396fca
commit
11aa8a48b1
@ -2,48 +2,26 @@
|
|||||||
// Chemins de travail
|
// Chemins de travail
|
||||||
$repoUrl = 'https://forge.chapril.org/api/v1/repos/ZwiiCMS-Team/ZwiiCMS'; // URL de l'API du dépôt
|
$repoUrl = 'https://forge.chapril.org/api/v1/repos/ZwiiCMS-Team/ZwiiCMS'; // URL de l'API du dépôt
|
||||||
|
|
||||||
// Étape 1 : Obtenir la version locale actuelle depuis common::WII_VERSION
|
// Appels de fonctions
|
||||||
// Charger la version locale en incluant le fichier de configuration ou en accédant à la classe appropriée
|
$latestVersion = getLatestTag($repoUrl);
|
||||||
require_once __DIR__ . '/core/class/common.php'; // Ajustez le chemin selon votre installation
|
|
||||||
$currentVersion = defined('common::ZWII_VERSION') ? common::ZWII_VERSION : 'v0.0.0';
|
|
||||||
|
|
||||||
// Étape 2 : Obtenir le dernier tag depuis le dépôt
|
// Comparer la version actuelle avec la dernière version
|
||||||
function getLatestTag() {
|
if (common::ZWII_VERSION === $latestVersion) {
|
||||||
global $repoUrl;
|
echo "Aucune mise à jour nécessaire. Version actuelle : " . common::ZWII_VERSION . "\n";
|
||||||
$tagsUrl = $repoUrl . '/tags';
|
|
||||||
$tags = json_decode(file_get_contents($tagsUrl), true);
|
|
||||||
|
|
||||||
if (!$tags || empty($tags)) {
|
|
||||||
die('Impossible de récupérer les tags.');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Retourne le dernier tag (supposant que le plus récent est en tête)
|
|
||||||
return $tags[0]['name'];
|
|
||||||
}
|
|
||||||
|
|
||||||
$latestVersion = getLatestTag();
|
|
||||||
|
|
||||||
if ($currentVersion === $latestVersion) {
|
|
||||||
echo "Aucune mise à jour nécessaire. Version actuelle : $currentVersion\n";
|
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Étape 3 : Lister les commits entre les deux versions
|
// Récupérer les SHAs des commits associés aux tags
|
||||||
function getCommitsBetweenTags($fromTag, $toTag) {
|
$fromSHA = getCommitSHAFromTag($repoUrl, common::ZWII_VERSION);
|
||||||
global $repoUrl;
|
$toSHA = getCommitSHAFromTag($repoUrl, $latestVersion);
|
||||||
$compareUrl = $repoUrl . "/compare/$fromTag...$toTag";
|
|
||||||
$compare = json_decode(file_get_contents($compareUrl), true);
|
|
||||||
|
|
||||||
if (!$compare || empty($compare['files'])) {
|
// Récupérer les commits entre les deux SHAs
|
||||||
die('Impossible de récupérer les commits ou fichiers modifiés.');
|
$commits = getCommitsBetweenSHAs($repoUrl, $fromSHA, $toSHA);
|
||||||
}
|
|
||||||
|
|
||||||
return $compare['files'];
|
// Lister les fichiers modifiés pour chaque commit
|
||||||
}
|
$modifiedFiles = getModifiedFiles($commits);
|
||||||
|
|
||||||
$modifiedFiles = getCommitsBetweenTags($currentVersion, $latestVersion);
|
// Télécharger et mettre à jour les fichiers modifiés
|
||||||
|
|
||||||
// Étape 4 : Télécharger les fichiers modifiés et les mettre à jour
|
|
||||||
foreach ($modifiedFiles as $file) {
|
foreach ($modifiedFiles as $file) {
|
||||||
$filePath = $file['filename'];
|
$filePath = $file['filename'];
|
||||||
$fileUrl = "https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS/raw/$latestVersion/$filePath";
|
$fileUrl = "https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS/raw/$latestVersion/$filePath";
|
||||||
@ -54,8 +32,13 @@ foreach ($modifiedFiles as $file) {
|
|||||||
mkdir(dirname($localPath), 0755, true);
|
mkdir(dirname($localPath), 0755, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Télécharger et remplacer le fichier
|
// Télécharger et remplacer le fichier, avec gestion des erreurs
|
||||||
file_put_contents($localPath, file_get_contents($fileUrl));
|
$fileContent = file_get_contents($fileUrl);
|
||||||
|
if ($fileContent === false) {
|
||||||
|
echo "Erreur lors du téléchargement de : $filePath\n";
|
||||||
|
continue; // Passer au fichier suivant en cas d'erreur
|
||||||
|
}
|
||||||
|
file_put_contents($localPath, $fileContent);
|
||||||
echo "Mise à jour de : $filePath\n";
|
echo "Mise à jour de : $filePath\n";
|
||||||
|
|
||||||
// Gérer la suppression de fichiers (si marqué comme supprimé dans le commit)
|
// Gérer la suppression de fichiers (si marqué comme supprimé dans le commit)
|
||||||
@ -65,6 +48,73 @@ foreach ($modifiedFiles as $file) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Étape 5 : Mettre à jour la version locale (à ajuster selon votre système)
|
|
||||||
echo "Mise à jour terminée vers la version : $latestVersion\n";
|
echo "Mise à jour terminée vers la version : $latestVersion\n";
|
||||||
|
|
||||||
|
// Fonctions
|
||||||
|
/**
|
||||||
|
* Récupère le dernier tag du dépôt.
|
||||||
|
*/
|
||||||
|
function getLatestTag($repoUrl) {
|
||||||
|
$tagsUrl = $repoUrl . '/tags';
|
||||||
|
$tags = json_decode(file_get_contents($tagsUrl), true);
|
||||||
|
|
||||||
|
if (!$tags || empty($tags)) {
|
||||||
|
die('Impossible de récupérer les tags.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retourne le nom du dernier tag
|
||||||
|
return $tags[0]['name'];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Récupère le SHA du commit lié à un tag spécifique.
|
||||||
|
*/
|
||||||
|
function getCommitSHAFromTag($repoUrl, $tag) {
|
||||||
|
$tagsUrl = $repoUrl . '/tags';
|
||||||
|
$tags = json_decode(file_get_contents($tagsUrl), true);
|
||||||
|
|
||||||
|
if (!$tags || empty($tags)) {
|
||||||
|
die('Impossible de récupérer les tags.');
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($tags as $tagInfo) {
|
||||||
|
if ($tagInfo['name'] === $tag) {
|
||||||
|
return $tagInfo['commit']['sha'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
die('Tag non trouvé : ' . $tag);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Récupère les commits entre deux SHAs spécifiques.
|
||||||
|
*/
|
||||||
|
function getCommitsBetweenSHAs($repoUrl, $fromSHA, $toSHA) {
|
||||||
|
$compareUrl = $repoUrl . "/compare/$fromSHA...$toSHA";
|
||||||
|
$compare = json_decode(file_get_contents($compareUrl), true);
|
||||||
|
|
||||||
|
if (!$compare || !isset($compare['commits']) || empty($compare['commits'])) {
|
||||||
|
die('Impossible de récupérer les commits ou fichiers modifiés.');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $compare['commits'];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extrait les fichiers modifiés depuis une liste de commits.
|
||||||
|
*/
|
||||||
|
function getModifiedFiles($commits) {
|
||||||
|
$modifiedFiles = [];
|
||||||
|
foreach ($commits as $commit) {
|
||||||
|
$commitUrl = $commit['url'];
|
||||||
|
$commitDetails = json_decode(file_get_contents($commitUrl), true);
|
||||||
|
|
||||||
|
if (isset($commitDetails['files'])) {
|
||||||
|
foreach ($commitDetails['files'] as $file) {
|
||||||
|
$modifiedFiles[] = $file;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $modifiedFiles;
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user