Récupère bien et installe

This commit is contained in:
Fred Tempez 2024-09-21 07:56:08 +02:00
parent 826f509b96
commit e17147814a

View File

@ -35,7 +35,7 @@ if (common::ZWII_VERSION === $latestVersion) {
exit;
}
logMessage("Récupération des SHAs des commits associés aux releases...");
logMessage("Récupération des SHAs des commits associés aux versions...");
$fromSHA = getCommitSHAFromTag($repoUrl, common::ZWII_VERSION);
$toSHA = getCommitSHAFromRelease($repoUrl, $latestVersion);
logMessage("SHA de départ : $fromSHA, SHA de fin : $toSHA");
@ -81,6 +81,7 @@ foreach ($modifiedFiles as $file) {
}
}
// Gérer la suppression des fichiers marqués comme supprimés
foreach ($modifiedFiles as $file) {
if ($file['status'] === 'removed') {
$filePath = $file['filename'];
@ -105,9 +106,8 @@ logMessage("Mise à jour terminée vers la version : $latestVersion");
*/
function logMessage($message) {
global $logFile;
// Vérifier que le fichier de log est bien défini
if (!empty($logFile)) {
// Ajouter le message dans le fichier de log
if (!empty($logFile)) {
file_put_contents($logFile, $message . PHP_EOL, FILE_APPEND);
}
// Afficher le message dans le champ HTML
@ -144,12 +144,29 @@ function getLatestPublishedRelease($repoUrl) {
function getCommitSHAFromTag($repoUrl, $tag) {
$tagUrl = $repoUrl . '/git/refs/tags/' . urlencode($tag);
logMessage("Récupération du SHA pour le tag $tag depuis l'URL : $tagUrl");
$tagInfo = json_decode(file_get_contents($tagUrl), true);
$tagInfoArray = json_decode(file_get_contents($tagUrl), true);
if (!$tagInfo || empty($tagInfo)) {
if (!$tagInfoArray || empty($tagInfoArray)) {
die("Impossible de récupérer le tag : $tag");
}
// Si la réponse est un tableau, prendre le premier élément
if (is_array($tagInfoArray) && isset($tagInfoArray[0])) {
$tagInfo = $tagInfoArray[0];
} else {
$tagInfo = $tagInfoArray;
}
// Vérifier que 'object' existe dans $tagInfo
if (!isset($tagInfo['object'])) {
die("Le tag $tag ne contient pas d'objet dans la réponse de l'API.");
}
// Vérifier que 'type' et 'sha' existent dans 'object'
if (!isset($tagInfo['object']['type']) || !isset($tagInfo['object']['sha'])) {
die("Les informations 'type' ou 'sha' manquent pour le tag $tag.");
}
// Si c'est un tag annoté, il faut suivre l'objet pour obtenir le commit SHA
if ($tagInfo['object']['type'] === 'tag') {
$annotatedTagUrl = $repoUrl . '/git/tags/' . $tagInfo['object']['sha'];
@ -158,9 +175,16 @@ function getCommitSHAFromTag($repoUrl, $tag) {
if (!$annotatedTag || empty($annotatedTag)) {
die("Impossible de récupérer le tag annoté : $tag");
}
if (!isset($annotatedTag['object']) || !isset($annotatedTag['object']['sha'])) {
die("Le tag annoté $tag ne contient pas les informations attendues.");
}
$commitSHA = $annotatedTag['object']['sha'];
} else {
}
// Si c'est un tag léger, le SHA du commit est directement accessible
elseif ($tagInfo['object']['type'] === 'commit') {
$commitSHA = $tagInfo['object']['sha'];
} else {
die("Type d'objet inattendu pour le tag $tag : " . $tagInfo['object']['type']);
}
logMessage("SHA trouvé pour le tag $tag : $commitSHA");
@ -181,12 +205,18 @@ function getCommitsManually($repoUrl, $fromSHA, $toSHA) {
$commits = [];
$page = 1;
$perPage = 100;
$maxPages = 50; // Limiter le nombre de pages pour éviter les boucles infinies
logMessage("Début de la récupération des commits depuis $toSHA jusqu'à $fromSHA...");
while (true) {
if ($page > $maxPages) {
die("Nombre maximum de pages atteint lors de la récupération des commits.");
}
$commitsUrl = "$repoUrl/commits?sha=$toSHA&per_page=$perPage&page=$page";
logMessage("Accès à l'URL des commits : $commitsUrl");
$response = json_decode(file_get_contents($commitsUrl), true);
if (!$response || empty($response)) {