Automated update

This commit is contained in:
klein panic
2025-02-01 16:25:27 -05:00
parent e67c3fd76c
commit 4f97db2a37

View File

@@ -245,7 +245,9 @@ update_repo() {
local repo_dir="$1" local repo_dir="$1"
local repo_number="$2" local repo_number="$2"
# Change to the repository directory. # Set up a trap to log errors within this function.
trap 'log_msg "Error in update_repo() at line ${LINENO}: \"$BASH_COMMAND\" exited with status $?"' ERR
cd "$repo_dir" || { log_msg "Repo #$repo_number: Unable to cd to $repo_dir"; return 1; } cd "$repo_dir" || { log_msg "Repo #$repo_number: Unable to cd to $repo_dir"; return 1; }
log_msg "Processing repository #$repo_number at $repo_dir" log_msg "Processing repository #$repo_number at $repo_dir"
@@ -276,7 +278,6 @@ update_repo() {
repo_name=$(basename "$repo_dir") repo_name=$(basename "$repo_dir")
log_msg "Repo #$repo_number: Attempting to create GitHub remote for $repo_name." log_msg "Repo #$repo_number: Attempting to create GitHub remote for $repo_name."
create_github_repo "$repo_name" "$repo_dir" "$repo_number" create_github_repo "$repo_name" "$repo_dir" "$repo_number"
# Recheck the remote after attempting creation.
if check_github_remote; then if check_github_remote; then
remote_available=true remote_available=true
log_msg "Repo #$repo_number: GitHub remote now exists." log_msg "Repo #$repo_number: GitHub remote now exists."
@@ -304,7 +305,7 @@ update_repo() {
log_msg "Repo #$repo_number: Staging all changes." log_msg "Repo #$repo_number: Staging all changes."
git add -A git add -A
# Commit changes; override PGP signing for automation. # Commit changes; override PGP signing requirement for automation.
if git -c commit.gpgSign=false commit -m "Automated update"; then if git -c commit.gpgSign=false commit -m "Automated update"; then
log_msg "Repo #$repo_number: Local commit succeeded." log_msg "Repo #$repo_number: Local commit succeeded."
else else
@@ -313,14 +314,14 @@ update_repo() {
return 0 return 0
fi fi
# Pull with rebase if remote exists and WiFi is available. # Pull with rebase if a remote exists and WiFi is available.
if [ "$remote_available" = true ] && check_wifi; then if [ "$remote_available" = true ] && check_wifi; then
log_msg "Repo #$repo_number: Attempting pull --rebase on branch 'main'." log_msg "Repo #$repo_number: Attempting pull --rebase on branch 'main'."
if timeout 60s git pull --rebase --no-edit origin main; then if timeout 60s git pull --rebase --no-edit origin main; then
log_msg "Repo #$repo_number: Rebase succeeded." log_msg "Repo #$repo_number: Rebase succeeded."
else else
log_msg "Repo #$repo_number: Rebase timed out or encountered conflicts; aborting rebase." log_msg "Repo #$repo_number: Rebase failed; aborting rebase."
git rebase --abort git rebase --abort || log_msg "Repo #$repo_number: Failed to abort rebase cleanly."
echo "Repo #$repo_number: Rebase Conflict" >> "$SMS_REPORT" echo "Repo #$repo_number: Rebase Conflict" >> "$SMS_REPORT"
echo "MC" echo "MC"
return 1 return 1
@@ -332,18 +333,17 @@ update_repo() {
# Push if remote exists and WiFi is available. # Push if remote exists and WiFi is available.
if [ "$remote_available" = true ] && check_wifi; then if [ "$remote_available" = true ] && check_wifi; then
log_msg "Repo #$repo_number: Attempting push on branch 'main'." log_msg "Repo #$repo_number: Attempting push on branch 'main'."
# Try the initial push.
if timeout 60s git push origin main; then if timeout 60s git push origin main; then
log_msg "Repo #$repo_number: Push succeeded." log_msg "Repo #$repo_number: Push succeeded."
echo "Repo #$repo_number: P" >> "$SMS_REPORT" echo "Repo #$repo_number: P" >> "$SMS_REPORT"
echo "P" echo "P"
else else
# Capture error output. # Capture error output for push.
local push_output push_status local push_output push_status
push_output=$(timeout 60s git push origin main 2>&1) || push_status=$? push_output=$(timeout 60s git push origin main 2>&1) || push_status=$?
log_msg "Repo #$repo_number: Push failed with error: $push_output" log_msg "Repo #$repo_number: Push failed with error: $push_output"
echo "Repo #$repo_number: PF" >> "$SMS_REPORT" echo "Repo #$repo_number: PF" >> "$SMS_REPORT"
# Fallback: Force-set the remote URL using your GitHub username. # Fallback: set the remote URL and try again.
local repo_name local repo_name
repo_name=$(basename "$repo_dir") repo_name=$(basename "$repo_dir")
log_msg "Repo #$repo_number: Attempting fallback: setting remote URL to git@github.com:kleinpanic/$repo_name.git" log_msg "Repo #$repo_number: Attempting fallback: setting remote URL to git@github.com:kleinpanic/$repo_name.git"
@@ -366,6 +366,8 @@ update_repo() {
echo "Repo #$repo_number: LC" >> "$SMS_REPORT" echo "Repo #$repo_number: LC" >> "$SMS_REPORT"
echo "LC" echo "LC"
fi fi
# Clear the ERR trap for this function.
trap - ERR
} }
echo "Starting auto git update script on $(date)" > "$REPORT" echo "Starting auto git update script on $(date)" > "$REPORT"