aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/lib_update.sh
diff options
context:
space:
mode:
authorMartin Guzman <55927935+brockar@users.noreply.github.com>2026-01-21 16:18:43 -0300
committerGitHub <noreply@github.com>2026-01-21 16:18:43 -0300
commitc6198c1bedeffd08ec3f60f7ba3a41e6c5870885 (patch)
tree458c030873b4e70ff9eda0baed5df257434871f4 /scripts/lib_update.sh
parent7dedbe3d4a4560ac15987fdf8164dbbb1f4701bf (diff)
parent88a09344e8cc7cffe69a017eb752e8c6fa17ddcb (diff)
Merge pull request #927 from JaKooLit/development
Merge Development to main branch for release
Diffstat (limited to 'scripts/lib_update.sh')
-rw-r--r--scripts/lib_update.sh84
1 files changed, 84 insertions, 0 deletions
diff --git a/scripts/lib_update.sh b/scripts/lib_update.sh
new file mode 100644
index 00000000..0a70dff0
--- /dev/null
+++ b/scripts/lib_update.sh
@@ -0,0 +1,84 @@
+#!/usr/bin/env bash
+
+# run_repo_update
+# Arguments:
+# $1 - expected repository root (typically SCRIPT_DIR from copy.sh)
+# Behavior:
+# * Verifies the script is executed from Hyprland-Dots root.
+# * Stashes local changes (including untracked), pulls latest changes.
+# * Shows progress, reports errors, and summarizes results.
+# * Waits for user input before returning control to caller.
+run_repo_update() {
+ local repo_dir="${1:-$(pwd)}"
+ local expected_name="Hyprland-Dots"
+ local log_dir="$repo_dir/Copy-Logs"
+ local log_file="$log_dir/update-$(date +%d-%H%M%S)_git.log"
+
+ mkdir -p "$log_dir"
+
+ echo "${INFO} Starting repository update..." | tee -a "$log_file"
+
+ if [ ! -d "$repo_dir" ] || [ "$(basename "$repo_dir")" != "$expected_name" ]; then
+ echo "${ERROR} This helper must be run from the $expected_name directory. Current: $(pwd)" | tee -a "$log_file"
+ read -n1 -s -r -p "Press any key to return to the menu..."
+ echo
+ return 1
+ fi
+
+ if [ "$PWD" != "$repo_dir" ]; then
+ echo "${INFO} Changing directory to $repo_dir" | tee -a "$log_file"
+ cd "$repo_dir" || {
+ echo "${ERROR} Failed to change directory to $repo_dir" | tee -a "$log_file"
+ read -n1 -s -r -p "Press any key to return to the menu..."
+ echo
+ return 1
+ }
+ fi
+
+ local head_before stash_msg pull_status=0
+ head_before=$(git rev-parse --short HEAD 2>/dev/null || echo "unknown")
+
+ echo "${INFO} Checking working tree..." | tee -a "$log_file"
+ if git diff --quiet && git diff --cached --quiet; then
+ stash_msg="No local changes; no stash created."
+ echo "${NOTE} $stash_msg" | tee -a "$log_file"
+ else
+ echo "${INFO} Stashing local changes (tracked + untracked)..." | tee -a "$log_file"
+ if stash_output=$(git stash push -u 2>&1); then
+ stash_msg="Created stash: $(echo "$stash_output" | head -n1)"
+ echo "${OK} $stash_msg" | tee -a "$log_file"
+ else
+ echo "${ERROR} git stash failed. Details:" | tee -a "$log_file"
+ echo "$stash_output" | tee -a "$log_file"
+ read -n1 -s -r -p "Press any key to return to the menu..."
+ echo
+ return 1
+ fi
+ fi
+
+ echo "${INFO} Pulling latest changes..." | tee -a "$log_file"
+ if git pull --ff-only 2>&1 | tee -a "$log_file"; then
+ pull_status=0
+ echo "${OK} Repository updated successfully." | tee -a "$log_file"
+ else
+ pull_status=$?
+ echo "${ERROR} git pull failed (exit $pull_status)." | tee -a "$log_file"
+ fi
+
+ local head_after
+ head_after=$(git rev-parse --short HEAD 2>/dev/null || echo "unknown")
+
+ echo "----------------------------------------" | tee -a "$log_file"
+ echo "Summary:" | tee -a "$log_file"
+ echo " Repo : $repo_dir" | tee -a "$log_file"
+ echo " HEAD before : $head_before" | tee -a "$log_file"
+ echo " HEAD after : $head_after" | tee -a "$log_file"
+ echo " Stash : $stash_msg" | tee -a "$log_file"
+ echo " Pull status : $( [ $pull_status -eq 0 ] && echo success || echo failure )" | tee -a "$log_file"
+ echo "----------------------------------------" | tee -a "$log_file"
+
+ read -n1 -s -r -p "Press any key to return to the main menu..."
+ echo
+
+ return $pull_status
+}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage