Correction
This commit is contained in:
141
setup/update.sh
141
setup/update.sh
@@ -1,6 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# This script is used to update your version of apxtri. It checks the code version in the package.json file. If the version is different,
|
# This script is used to update your version of apxtri and objects.
|
||||||
# the script is triggered. It is launched via a curl request to the apxtri Gitea server, linked to a crontab.
|
# It checks the code version in the package.json files. If the version is different,
|
||||||
|
# the script is triggered. It is launched via a curl request to the Gitea server, linked to a crontab.
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
@@ -17,26 +18,35 @@ else
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ==== FICHIERS PACKAGE.JSON ====
|
# ==== NOUVELLE FONCTION POUR LES TRIBUS ====
|
||||||
LOCAL_PACKAGE="$NODEPATH/$TOWN-$NATION/apxtri/package.json"
|
handle_tribes() {
|
||||||
REMOTE_PACKAGE_URL="$URL_REPO/apxtri/raw/branch/main/package.json"
|
local tribes_string="$1"
|
||||||
|
IFS=',' read -ra TRIBES <<< "$tribes_string"
|
||||||
|
|
||||||
if [[ ! -f "$LOCAL_PACKAGE" ]]; then
|
if [[ ${#TRIBES[@]} -eq 0 ]]; then
|
||||||
echo "[ERROR] Fichier $LOCAL_PACKAGE introuvable !" >&2
|
echo "[ERROR] Aucun nom de tribu fourni." >&2
|
||||||
exit 1
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "📦 Téléchargement des tribus : ${TRIBES[*]}"
|
||||||
|
|
||||||
|
for tribe in "${TRIBES[@]}"; do
|
||||||
|
tribe=$(echo "$tribe" | xargs) # trim espaces
|
||||||
|
if [[ -z "$tribe" ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
echo "➡️ Clonage de la tribu '$tribe'..."
|
||||||
|
# Lien factice pour l’instant :
|
||||||
|
git clone "https://fake.repo.url/${tribe}.git" "$NODEPATH/$TOWN-$NATION/$tribe" || true
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# ==== VÉRIFIER LES PARAMÈTRES ====
|
||||||
|
if [[ $# -ge 1 ]]; then
|
||||||
|
handle_tribes "$1"
|
||||||
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ==== EXTRAIRE LES VERSIONS ====
|
|
||||||
LOCAL_VERSION=$(grep -oP '"version"\s*:\s*"\K[0-9]+\.[0-9]+\.[0-9]+' "$LOCAL_PACKAGE")
|
|
||||||
REMOTE_VERSION=$(curl -fsSL "$REMOTE_PACKAGE_URL" | grep -oP '"version"\s*:\s*"\K[0-9]+\.[0-9]+\.[0-9]+')
|
|
||||||
|
|
||||||
if [[ -z "$LOCAL_VERSION" || -z "$REMOTE_VERSION" ]]; then
|
|
||||||
echo "[ERROR] Impossible de lire les versions locale/distante" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "$DATE 🔍 Version locale : $LOCAL_VERSION Version distante: $REMOTE_VERSION"
|
|
||||||
|
|
||||||
# ==== FONCTION COMPARAISON SEMVER ====
|
# ==== FONCTION COMPARAISON SEMVER ====
|
||||||
compare_versions() {
|
compare_versions() {
|
||||||
local IFS=.
|
local IFS=.
|
||||||
@@ -49,49 +59,102 @@ compare_versions() {
|
|||||||
# comparer major, minor, patch dans l'ordre
|
# comparer major, minor, patch dans l'ordre
|
||||||
for i in 0 1 2; do
|
for i in 0 1 2; do
|
||||||
if ((10#${ver1[i]} < 10#${ver2[i]})); then
|
if ((10#${ver1[i]} < 10#${ver2[i]})); then
|
||||||
echo "lt-$i" # version locale < distante à ce niveau
|
echo "lt-$i"
|
||||||
return
|
return
|
||||||
elif ((10#${ver1[i]} > 10#${ver2[i]})); then
|
elif ((10#${ver1[i]} > 10#${ver2[i]})); then
|
||||||
echo "gt-$i" # version locale > distante
|
echo "gt-$i"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "eq" # exactement égal
|
echo "eq"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ==== PACKAGE.JSON APXTRI ====
|
||||||
|
LOCAL_PACKAGE="$NODEPATH/$TOWN-$NATION/apxtri/package.json"
|
||||||
|
REMOTE_PACKAGE_URL="$URL_REPO/apxtri/raw/branch/main/package.json"
|
||||||
|
|
||||||
|
if [[ ! -f "$LOCAL_PACKAGE" ]]; then
|
||||||
|
echo "[ERROR] Fichier $LOCAL_PACKAGE introuvable !" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
LOCAL_VERSION=$(grep -oP '"version"\s*:\s*"\K[0-9]+\.[0-9]+\.[0-9]+' "$LOCAL_PACKAGE")
|
||||||
|
REMOTE_VERSION=$(curl -fsSL "$REMOTE_PACKAGE_URL" | grep -oP '"version"\s*:\s*"\K[0-9]+\.[0-9]+\.[0-9]+')
|
||||||
|
|
||||||
|
if [[ -z "$LOCAL_VERSION" || -z "$REMOTE_VERSION" ]]; then
|
||||||
|
echo "[ERROR] Impossible de lire les versions locale/distante (apxtri)" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$DATE 🔍 [apxtri] Local: $LOCAL_VERSION / Remote: $REMOTE_VERSION"
|
||||||
|
|
||||||
RESULT=$(compare_versions "$LOCAL_VERSION" "$REMOTE_VERSION")
|
RESULT=$(compare_versions "$LOCAL_VERSION" "$REMOTE_VERSION")
|
||||||
|
|
||||||
case "$RESULT" in
|
case "$RESULT" in
|
||||||
eq)
|
eq)
|
||||||
echo "$DATE ✅ Aucune mise à jour nécessaire.($LOCAL_VERSION -> $REMOTE_VERSION)"
|
echo "$DATE ✅ [apxtri] Aucune mise à jour nécessaire."
|
||||||
exit 0
|
|
||||||
;;
|
;;
|
||||||
lt-0)
|
lt-0)
|
||||||
echo "$DATE ⚠️ New major version. Check your README and your code before update.($LOCAL_VERSION -> $REMOTE_VERSION)."
|
echo "$DATE ⚠️ [apxtri] Nouvelle version majeure. Vérifie avant update."
|
||||||
exit 0
|
|
||||||
;;
|
;;
|
||||||
lt-1|lt-2)
|
lt-1|lt-2)
|
||||||
echo "$DATE ⬆️ Minor version detected.($LOCAL_VERSION -> $REMOTE_VERSION). Updating..."
|
echo "$DATE ⬆️ [apxtri] Mise à jour mineure... Updating..."
|
||||||
|
echo "⚡ [apxtri] Mise à jour en cours..."
|
||||||
|
sudo apt update && sudo apt upgrade -y
|
||||||
|
cd "$NODEPATH/$TOWN-$NATION/apxtri"
|
||||||
|
git pull origin main
|
||||||
|
npm install
|
||||||
|
if [[ "$MODE" == "prod" ]]; then
|
||||||
|
echo "🔄 [apxtri] Redémarrage du service..."
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl restart apxtri.service
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
gt-*)
|
gt-*)
|
||||||
echo "$DATE ⚠️ Local version ($LOCAL_VERSION) est plus récente que la distante ($REMOTE_VERSION)."
|
echo "$DATE ⚠️ [apxtri] Version locale plus récente que distante."
|
||||||
exit 0
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# ==== MISE A JOUR ====
|
# ==== PACKAGE.JSON OBJECTS ====
|
||||||
echo "⚡ Mise à jour en cours..."
|
LOCAL_PACKAGE="$DATAPATH/data/objects/package.json"
|
||||||
sudo apt update && sudo apt upgrade -y
|
REMOTE_PACKAGE_URL="$URL_REPO/objects/raw/branch/main/package.json"
|
||||||
|
|
||||||
cd "$NODEPATH/$TOWN-$NATION/apxtri"
|
if [[ ! -f "$LOCAL_PACKAGE" ]]; then
|
||||||
git pull origin main
|
echo "[ERROR] Fichier $LOCAL_PACKAGE introuvable !" >&2
|
||||||
npm install
|
exit 1
|
||||||
|
|
||||||
if [[ "$MODE" == "prod" ]]; then
|
|
||||||
echo "🔄 Redémarrage du service..."
|
|
||||||
sudo systemctl daemon-reload
|
|
||||||
sudo systemctl restart apxtri.service
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
LOCAL_VERSION=$(grep -oP '"version"\s*:\s*"\K[0-9]+\.[0-9]+\.[0-9]+' "$LOCAL_PACKAGE")
|
||||||
|
REMOTE_VERSION=$(curl -fsSL "$REMOTE_PACKAGE_URL" | grep -oP '"version"\s*:\s*"\K[0-9]+\.[0-9]+\.[0-9]+')
|
||||||
|
|
||||||
|
if [[ -z "$LOCAL_VERSION" || -z "$REMOTE_VERSION" ]]; then
|
||||||
|
echo "[ERROR] Impossible de lire les versions locale/distante (objects)" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$DATE 🔍 [objects] Local: $LOCAL_VERSION / Remote: $REMOTE_VERSION"
|
||||||
|
|
||||||
|
RESULT=$(compare_versions "$LOCAL_VERSION" "$REMOTE_VERSION")
|
||||||
|
|
||||||
|
case "$RESULT" in
|
||||||
|
eq)
|
||||||
|
echo "$DATE ✅ [objects] Aucune mise à jour nécessaire."
|
||||||
|
;;
|
||||||
|
lt-0)
|
||||||
|
echo "$DATE ⚠️ [objects] Nouvelle version majeure. Vérifie avant update."
|
||||||
|
;;
|
||||||
|
lt-1|lt-2)
|
||||||
|
echo "$DATE ⬆️ [objects] Mise à jour mineure... Updating..."
|
||||||
|
echo "⚡ [objects] Mise à jour en cours..."
|
||||||
|
sudo apt update && sudo apt upgrade -y
|
||||||
|
cd "$DATAPATH/data/objects"
|
||||||
|
git pull origin main
|
||||||
|
npm install
|
||||||
|
;;
|
||||||
|
gt-*)
|
||||||
|
echo "$DATE ⚠️ [objects] Version locale plus récente que distante."
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
echo "✅ Mise à jour terminée avec succès."
|
echo "✅ Mise à jour terminée avec succès."
|
||||||
|
Reference in New Issue
Block a user