Correction
This commit is contained in:
143
setup/update.sh
143
setup/update.sh
@@ -1,6 +1,7 @@
|
||||
#!/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,
|
||||
# the script is triggered. It is launched via a curl request to the apxtri Gitea server, linked to a crontab.
|
||||
# This script is used to update your version of apxtri and objects.
|
||||
# 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
|
||||
|
||||
@@ -17,26 +18,35 @@ else
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ==== FICHIERS PACKAGE.JSON ====
|
||||
LOCAL_PACKAGE="$NODEPATH/$TOWN-$NATION/apxtri/package.json"
|
||||
REMOTE_PACKAGE_URL="$URL_REPO/apxtri/raw/branch/main/package.json"
|
||||
# ==== NOUVELLE FONCTION POUR LES TRIBUS ====
|
||||
handle_tribes() {
|
||||
local tribes_string="$1"
|
||||
IFS=',' read -ra TRIBES <<< "$tribes_string"
|
||||
|
||||
if [[ ! -f "$LOCAL_PACKAGE" ]]; then
|
||||
echo "[ERROR] Fichier $LOCAL_PACKAGE introuvable !" >&2
|
||||
exit 1
|
||||
if [[ ${#TRIBES[@]} -eq 0 ]]; then
|
||||
echo "[ERROR] Aucun nom de tribu fourni." >&2
|
||||
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
|
||||
|
||||
# ==== 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 ====
|
||||
compare_versions() {
|
||||
local IFS=.
|
||||
@@ -49,49 +59,102 @@ compare_versions() {
|
||||
# comparer major, minor, patch dans l'ordre
|
||||
for i in 0 1 2; do
|
||||
if ((10#${ver1[i]} < 10#${ver2[i]})); then
|
||||
echo "lt-$i" # version locale < distante à ce niveau
|
||||
echo "lt-$i"
|
||||
return
|
||||
elif ((10#${ver1[i]} > 10#${ver2[i]})); then
|
||||
echo "gt-$i" # version locale > distante
|
||||
echo "gt-$i"
|
||||
return
|
||||
fi
|
||||
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")
|
||||
|
||||
case "$RESULT" in
|
||||
eq)
|
||||
echo "$DATE ✅ Aucune mise à jour nécessaire.($LOCAL_VERSION -> $REMOTE_VERSION)"
|
||||
exit 0
|
||||
echo "$DATE ✅ [apxtri] Aucune mise à jour nécessaire."
|
||||
;;
|
||||
lt-0)
|
||||
echo "$DATE ⚠️ New major version. Check your README and your code before update.($LOCAL_VERSION -> $REMOTE_VERSION)."
|
||||
exit 0
|
||||
echo "$DATE ⚠️ [apxtri] Nouvelle version majeure. Vérifie avant update."
|
||||
;;
|
||||
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-*)
|
||||
echo "$DATE ⚠️ Local version ($LOCAL_VERSION) est plus récente que la distante ($REMOTE_VERSION)."
|
||||
exit 0
|
||||
echo "$DATE ⚠️ [apxtri] Version locale plus récente que distante."
|
||||
;;
|
||||
esac
|
||||
|
||||
# ==== MISE A JOUR ====
|
||||
echo "⚡ Mise à jour en cours..."
|
||||
sudo apt update && sudo apt upgrade -y
|
||||
# ==== PACKAGE.JSON OBJECTS ====
|
||||
LOCAL_PACKAGE="$DATAPATH/data/objects/package.json"
|
||||
REMOTE_PACKAGE_URL="$URL_REPO/objects/raw/branch/main/package.json"
|
||||
|
||||
cd "$NODEPATH/$TOWN-$NATION/apxtri"
|
||||
git pull origin main
|
||||
npm install
|
||||
|
||||
if [[ "$MODE" == "prod" ]]; then
|
||||
echo "🔄 Redémarrage du service..."
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl restart apxtri.service
|
||||
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 (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."
|
||||
|
Reference in New Issue
Block a user