This commit is contained in:
Fred Tempez 2024-09-19 13:27:42 +02:00
parent 7a4b1589af
commit 8304396fca
2 changed files with 80 additions and 0 deletions

View File

@ -32,6 +32,7 @@ class config extends common
'blacklistReset' => self::GROUP_ADMIN,
'blacklistDownload' => self::GROUP_ADMIN,
'register' => self::GROUP_ADMIN,
'autoupdate' => self::GROUP_ADMIN,
];
public static $timezones = [
@ -938,6 +939,15 @@ class config extends common
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'config/' . $this->getUrl(2),
]);
}
public function autoupdate():void {
// Valeurs en sortie
$this->addOutput([
'title' => helper::translate('Auto Update'),
'view' => 'autoupdate',
]);
}
}

View File

@ -0,0 +1,70 @@
<?php
// Chemins de travail
$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
// Charger la version locale en incluant le fichier de configuration ou en accédant à la classe appropriée
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
function getLatestTag() {
global $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 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;
}
// Étape 3 : Lister les commits entre les deux versions
function getCommitsBetweenTags($fromTag, $toTag) {
global $repoUrl;
$compareUrl = $repoUrl . "/compare/$fromTag...$toTag";
$compare = json_decode(file_get_contents($compareUrl), true);
if (!$compare || empty($compare['files'])) {
die('Impossible de récupérer les commits ou fichiers modifiés.');
}
return $compare['files'];
}
$modifiedFiles = getCommitsBetweenTags($currentVersion, $latestVersion);
// Étape 4 : Télécharger les fichiers modifiés et les mettre à jour
foreach ($modifiedFiles as $file) {
$filePath = $file['filename'];
$fileUrl = "https://forge.chapril.org/ZwiiCMS-Team/ZwiiCMS/raw/$latestVersion/$filePath";
$localPath = __DIR__ . '/' . $filePath;
// Créer le dossier si nécessaire
if (!is_dir(dirname($localPath))) {
mkdir(dirname($localPath), 0755, true);
}
// Télécharger et remplacer le fichier
file_put_contents($localPath, file_get_contents($fileUrl));
echo "Mise à jour de : $filePath\n";
// Gérer la suppression de fichiers (si marqué comme supprimé dans le commit)
if ($file['status'] === 'removed' && file_exists($localPath)) {
unlink($localPath);
echo "Suppression de : $filePath\n";
}
}
// Étape 5 : Mettre à jour la version locale (à ajuster selon votre système)
echo "Mise à jour terminée vers la version : $latestVersion\n";
?>