diff --git a/update.sh b/update.sh index 4ec0e7e40..74eb8ff2c 100755 --- a/update.sh +++ b/update.sh @@ -20,11 +20,28 @@ fi BRANCH="$(cd "${SCRIPT_DIR}" && git rev-parse --abbrev-ref HEAD)" MODULE_DIR="${SCRIPT_DIR}/_modules" +# Calculate hash before fetch +if [[ -d "${MODULE_DIR}" && -n "$(ls -A "${MODULE_DIR}" 2>/dev/null)" ]]; then + MODULES_HASH_BEFORE=$(find "${MODULE_DIR}" -type f -exec sha256sum {} \; 2>/dev/null | sort | sha256sum | awk '{print $1}') +else + MODULES_HASH_BEFORE="EMPTY" +fi + +echo -e "\e[33mFetching latest _modules from origin/${BRANCH}…\e[0m" +git fetch origin "${BRANCH}" +git checkout "origin/${BRANCH}" -- _modules + if [[ ! -d "${MODULE_DIR}" || -z "$(ls -A "${MODULE_DIR}")" ]]; then - echo -e "\e[33m_modules is missing or empty – fetching all Modules from origin/${BRANCH}…\e[0m" - git fetch origin "${BRANCH}" - git checkout "origin/${BRANCH}" -- _modules - echo -e "\e[33mDone. Please restart the script...\e[0m" + echo -e "\e[31mError: _modules is still missing or empty after fetch!\e[0m" + exit 2 +fi + +# Calculate hash after fetch +MODULES_HASH_AFTER=$(find "${MODULE_DIR}" -type f -exec sha256sum {} \; 2>/dev/null | sort | sha256sum | awk '{print $1}') + +# Check if modules changed +if [[ "${MODULES_HASH_BEFORE}" != "${MODULES_HASH_AFTER}" ]]; then + echo -e "\e[33m_modules have been updated. Please restart the update script.\e[0m" exit 2 fi @@ -320,28 +337,6 @@ if [ ! "$DEV" ]; then chmod +x update.sh EXIT_COUNT+=1 fi - - MODULE_DIR="$(dirname "$0")/_modules" - echo -e "\e[32mChecking for updates in _modules...\e[0m" - if [ ! -d "${MODULE_DIR}" ] || [ -z "$(ls -A "${MODULE_DIR}")" ]; then - echo -e "\e[33m_modules missing or empty — fetching from origin...\e[0m" - git checkout "origin/${BRANCH}" -- _modules - else - OLD_SUM="$(find "${MODULE_DIR}" -type f -exec sha1sum {} \; | sort | sha1sum)" - git fetch origin - git checkout "origin/${BRANCH}" -- _modules - NEW_SUM="$(find "${MODULE_DIR}" -type f -exec sha1sum {} \; | sort | sha1sum)" - - if [[ "${OLD_SUM}" != "${NEW_SUM}" ]]; then - EXIT_COUNT+=1 - fi - fi - - if [ ${EXIT_COUNT} -ge 1 ]; then - echo "Changes for the update Script, please run this script again, exiting!" - exit 2 - fi - fi if [ ! "$FORCE" ]; then