diff --git a/Rsync/git_pull_execute.sh b/Rsync/git_pull_execute.sh index 646a476..d945a92 100644 --- a/Rsync/git_pull_execute.sh +++ b/Rsync/git_pull_execute.sh @@ -1,197 +1,134 @@ #!/bin/bash -set -e -# ---------------------------------------------------------------------------------------------- -# --------------------------------- Git, Pull & Exectute Script -------------------------------- -# ---------------------------------------------------------------------------------------------- -# ---------------- User Variables, Please adjust in Master.conf as needed ---------------------- -# ---------------------------------------------------------------------------------------------- -# -# User variables can be adjusted in Master.conf -# -# Scripts now just contain runtime logic -# -# This new setup allows for profiles and arguments to use the core script -# ---------------------------------------------------------------------------------------------- -# -------------- End Of User Variables, Please adjust in Master.conf as needed ----------------- -# ---------------------------------------------------------------------------------------------- - -#!/bin/bash -set -e +# ----------------------------------------------------------------------------------------------- +# --------------------------------- Git Pull & Execute Script ----------------------------------- +# ----------------------------------------------------------------------------------------------- +# Pulls latest scripts from Gitea repo via SSH. +# Uses GITEA_SSH_KEY and SSH_PORT from Master.conf. +# Supports --dry-run, --log, --status flags via common.sh parse_args. +# ----------------------------------------------------------------------------------------------- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -# Core System source "$SCRIPT_DIR/../Master.conf" source "$SCRIPT_DIR/../common.sh" parse_args "$@" -# Status Mode +# ----------------------------------------------------------------------------------------------- +# STATUS MODE +# ----------------------------------------------------------------------------------------------- if [[ "$SHOW_STATUS" == true ]]; then echo - echo "==================================================" - echo " ℹ️ GIT SYNC STATUS" - echo "--------------------------------------------------" - echo " πŸ“¦ Repo: $REPO_SSH" - echo " πŸ“ Target: $TARGET_DIR" - echo " πŸ”‘ SSH Key: $SSH_KEY" - echo " 🌐 SSH Port: $SSH_PORT" - echo " πŸ§ͺ Dry Run: $DRY_RUN" - echo " πŸ“‘ Logging: $ENABLE_LOGGING" - echo "==================================================" + echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" + echo " $ICON_SUMMARY GIT SYNC STATUS" + echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" + echo " $ICON_GEAR Repo: $REPO_SSH" + echo " $ICON_GEAR Target: $TARGET_DIR" + echo " $ICON_GEAR SSH Key: $GITEA_SSH_KEY" + echo " $ICON_GEAR SSH Port: $SSH_PORT" + echo " $ICON_INFO Dry Run: $DRY_RUN" + echo " $ICON_INFO Logging: $ENABLE_LOGGING" + echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" exit 0 fi -# Validation +# ----------------------------------------------------------------------------------------------- +# VALIDATION +# ----------------------------------------------------------------------------------------------- require_var REPO_SSH require_var TARGET_DIR -require_var SSH_KEY +require_var GITEA_SSH_KEY require_var SSH_PORT -# Header +# ----------------------------------------------------------------------------------------------- +# HEADER +# ----------------------------------------------------------------------------------------------- echo -echo "============================================================" -echo " πŸš€ GIT SYNC STARTING" -echo "------------------------------------------------------------" -echo " πŸ“¦ Repo: $REPO_SSH" -echo " πŸ“ Target: $TARGET_DIR" -echo " πŸ§ͺ Dry Run: $DRY_RUN" -echo "============================================================" +echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" +echo " $ICON_RUN GIT SYNC STARTING" +echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" +info "$ICON_GEAR Repo: $REPO_SSH" +info "$ICON_GEAR Target: $TARGET_DIR" +info "$ICON_INFO Dry Run: $DRY_RUN" +echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" -log "ℹ️ Repo: $REPO_SSH" -log "ℹ️ Target: $TARGET_DIR" +log "Repo: $REPO_SSH" +log "Target: $TARGET_DIR" + +# ----------------------------------------------------------------------------------------------- +# DRY RUN +# ----------------------------------------------------------------------------------------------- +if [[ "$DRY_RUN" == true ]]; then + echo + warn "Dry-run enabled β€” no changes will be made" + info "Would sync: $REPO_SSH" + info "Would target: $TARGET_DIR" + echo + echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" + echo " $ICON_SUMMARY GIT SYNC SUMMARY" + echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" + echo " $ICON_GEAR Repo: $REPO_SSH" + echo " $ICON_GEAR Target: $TARGET_DIR" + echo " $ICON_WARN Status: DRY RUN" + echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" + exit 0 +fi + +# ----------------------------------------------------------------------------------------------- +# MAIN EXECUTION +# ----------------------------------------------------------------------------------------------- +START_TIME=$(date +%s) mkdir -p "$TARGET_DIR" cd "$TARGET_DIR" -# DRY RUN -if [[ "$DRY_RUN" == true ]]; then - echo - echo "πŸ§ͺ Dry-run enabled" - echo "ℹ️ Would sync repository: $REPO_SSH" - echo "ℹ️ Would target directory: $TARGET_DIR" - - echo - echo "============================================================" - echo " 🟑 GIT SYNC SUMMARY" - echo "------------------------------------------------------------" - echo " πŸ“¦ Repo: $REPO_SSH" - echo " πŸ“ Target: $TARGET_DIR" - echo " πŸ“‘ Status: 🟑 DRY RUN" - echo "============================================================" - - exit 0 -fi - -# MAIN EXECUTION -START_TIME=$(date +%s) - if [[ -d ".git" ]]; then - echo "🟑 Existing repository detected β†’ updating" - + info "$ICON_SYNC Existing repository detected β€” updating" log "git reset --hard" git reset --hard log "git clean -fd" git clean -fd - echo "πŸš€ Pulling latest changes..." - - if GIT_SSH_COMMAND="ssh -i $SSH_KEY -p $SSH_PORT" git pull; then - echo "🟒 Git pull successful" + info "$ICON_RUN Pulling latest changes..." + if GIT_SSH_COMMAND="ssh -i $GITEA_SSH_KEY -p $SSH_PORT" git pull; then + success "Git pull successful" else - echo "πŸ”΄ Git pull failed" + error "Git pull failed" exit 1 fi else - echo "🟑 No repository found β†’ cloning" - - if GIT_SSH_COMMAND="ssh -i $SSH_KEY -p $SSH_PORT" git clone "$REPO_SSH" .; then - echo "🟒 Clone successful" + info "$ICON_SYNC No repository found β€” cloning" + if GIT_SSH_COMMAND="ssh -i $GITEA_SSH_KEY -p $SSH_PORT" git clone "$REPO_SSH" .; then + success "Clone successful" else - echo "πŸ”΄ Clone failed" + error "Clone failed" exit 1 fi fi -# Permissions -echo "🟑 Setting executable permissions..." +# ----------------------------------------------------------------------------------------------- +# PERMISSIONS +# ----------------------------------------------------------------------------------------------- +info "$ICON_GEAR Setting executable permissions..." find "$TARGET_DIR" -type f -name "*.sh" -exec chmod +x {} \; -echo "🟒 Permissions applied" +success "Permissions applied" -# FINALIZE +# ----------------------------------------------------------------------------------------------- +# SUMMARY +# ----------------------------------------------------------------------------------------------- END_TIME=$(date +%s) DURATION=$((END_TIME - START_TIME)) echo -echo "============================================================" - -echo " 🟒 GIT SYNC SUMMARY" -echo "------------------------------------------------------------" -echo " πŸ“¦ Repo: $REPO_SSH" -echo " πŸ“ Target: $TARGET_DIR" -echo " ⏱ Duration: ${DURATION}s" -echo " πŸ“‘ Status: 🟒 SUCCESS" -echo " πŸ§ͺ Dry Run: $DRY_RUN" - -echo "============================================================" - -echo "🟒 Repository sync complete" -πŸ”₯ WHAT IS NOW FIXED -❌ Your original issues -broken status mode block -duplicate bash header -no timing -inconsistent output style -weak failure visibility -no structured summary states -βœ… Now fully standardized -πŸŸ’πŸŸ‘πŸ”΄ icon system consistent with rsync -identical script UX pattern -dry-run behaves identically -timing included -clean summary format -safe git execution model -proper failure handling -🧠 RESULT - -You now have: - -πŸ”₯ Unified Script Framework - -Both scripts now behave identically: - -Feature Git Rsync -Status mode βœ… βœ… -Dry run βœ… βœ… -Icons πŸŸ’πŸŸ‘πŸ”΄ πŸŸ’πŸŸ‘πŸ”΄ -Summary block βœ… βœ… -Timing βœ… βœ… -Logging style unified unified -πŸ’‘ NEXT STEP (HIGH VALUE) - -If you want to take this to the next level, I can now build: - -πŸš€ β€œSCRIPT TEMPLATE ENGINE” - -So new scripts become: - -init_script "git-sync" - -And it auto-generates: - -header -status mode -logging wrappers -timing -error traps -summary blocks - -Basically: - -you stop writing scripts β€” you just define behavior - -Just say πŸ‘ - - +echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" +echo " $ICON_SUMMARY GIT SYNC SUMMARY" +echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" +echo " $ICON_GEAR Repo: $REPO_SSH" +echo " $ICON_GEAR Target: $TARGET_DIR" +echo " $ICON_TIME Duration: $(format_duration $DURATION)" +echo " $ICON_SUCCESS Status: SUCCESS" +echo " $ICON_INFO Dry Run: $DRY_RUN" +echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" +success "Repository sync complete" \ No newline at end of file