diff --git a/init.sh b/init.sh index 1bfcfc9..dae5b9a 100755 --- a/init.sh +++ b/init.sh @@ -1424,6 +1424,20 @@ clone_and_install() { echo "NOTICE: Local install detected — no Git remote to clone." return 0 fi + if [[ "$CFG_INSTALL_MODE" == "release" ]]; then + if [ -f "$install_scripts_dir/source/fetch.sh" ] && [ -f "$install_scripts_dir/docker/command/run_privileged.sh" ]; then + source "$install_scripts_dir/docker/command/run_privileged.sh" + source "$install_scripts_dir/source/fetch.sh" + if lpFetchRelease; then + echo "SUCCESS: Re-fetched the verified release. Run 'libreportal run' to continue." + else + echo "ERROR: release re-fetch failed." + fi + else + echo "NOTICE: Release install — reinstall via the bootstrap: curl -fsSL /install.sh | sudo bash" + fi + return 0 + fi update_config_values; setup_repo; clone_repo; diff --git a/scripts/function/run/reinstall_libreportal.sh b/scripts/function/run/reinstall_libreportal.sh index 5eb0894..94a1d22 100755 --- a/scripts/function/run/reinstall_libreportal.sh +++ b/scripts/function/run/reinstall_libreportal.sh @@ -1,9 +1,21 @@ #!/bin/bash -runReinstall() +runReinstall() { isHeader "Reinstalling LibrePortal" - + + # Release mode: re-fetch the verified tarball instead of re-cloning from git. + if [[ "$CFG_INSTALL_MODE" == "release" ]]; then + if declare -f lpFetchRelease >/dev/null 2>&1 && lpFetchRelease; then + runSystem cp -f "$script_dir/init.sh" /root/ 2>/dev/null || true + runInstallOp chown -R "$sudo_user_name:$sudo_user_name" "$script_dir" + isSuccessful "Re-fetched the verified release. Run 'libreportal run' to continue." + else + isError "Release re-fetch failed — install unchanged." + fi + return + fi + # Check if this is a local installation if [[ "$CFG_INSTALL_MODE" == "local" ]]; then echo "NOTICE: Local installation detected - cannot reinstall from Git." diff --git a/scripts/update/git/reset_git.sh b/scripts/update/git/reset_git.sh index e74ada4..e890954 100755 --- a/scripts/update/git/reset_git.sh +++ b/scripts/update/git/reset_git.sh @@ -2,6 +2,18 @@ gitReset() { + # Release mode: re-fetch the verified tarball instead of re-cloning. + if [[ "$CFG_INSTALL_MODE" == "release" ]]; then + if declare -f lpFetchRelease >/dev/null 2>&1 && lpFetchRelease; then + runSystem cp -f "$script_dir/init.sh" /root/ 2>/dev/null || true + runInstallOp chown -R "$sudo_user_name:$sudo_user_name" "$script_dir" + isSuccessful "Re-fetched the verified release." + else + isError "Release re-fetch failed — install unchanged." + fi + return + fi + # Check if this is a local installation if [[ "$CFG_INSTALL_MODE" == "local" ]]; then isNotice "Local installation detected - Git reset is not applicable."