aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJaKooLit <jimmielovejay@gmail.com>2024-01-03 09:53:22 +0900
committerJaKooLit <jimmielovejay@gmail.com>2024-01-03 09:53:22 +0900
commit27bc346953d7cd9b13dc6dc556ff5f4764795e09 (patch)
treee1e70a52f705b60ef0e1d47a3cfd7f194510294a
parent651619b7dfbf0d1bbf067b67f93c4ec127a7f3a7 (diff)
Enhance Logging of Copy.sh
Introduced upgrade.sh bump v2.2.4
-rw-r--r--config/hypr/v2.2.4 (renamed from config/hypr/v2.2.3)0
-rwxr-xr-xcopy.sh21
-rwxr-xr-xupgrade.sh145
3 files changed, 159 insertions, 7 deletions
diff --git a/config/hypr/v2.2.3 b/config/hypr/v2.2.4
index 31b3414d..31b3414d 100644
--- a/config/hypr/v2.2.3
+++ b/config/hypr/v2.2.4
diff --git a/copy.sh b/copy.sh
index 9bdd16ff..7b513a90 100755
--- a/copy.sh
+++ b/copy.sh
@@ -28,8 +28,13 @@ ORANGE=$(tput setaf 166)
YELLOW=$(tput setaf 3)
RESET=$(tput sgr0)
+# Create Directory for Copy Logs
+if [ ! -d Copy-Logs ]; then
+ mkdir Copy-Logs
+fi
+
# Set the name of the log file to include the current date and time
-LOG="install-$(date +%d-%H%M%S)_dotfiles.log"
+LOG="Copy-Logs/install-$(date +%d-%H%M%S)_dotfiles.log"
# update home folders
xdg-user-dirs-update 2>&1 | tee -a "$LOG" || true
@@ -85,6 +90,7 @@ while true; do
# If the detected layout is correct, update the 'kb_layout=' line in the file
awk -v layout="$layout" '/kb_layout/ {$0 = " kb_layout=" layout} 1' config/hypr/UserConfigs/UserSettings.conf > temp.conf
mv temp.conf config/hypr/UserConfigs/UserSettings.conf
+ echo "${NOTE} kb_layout $layout configured in settings. " 2>&1 | tee -a "$LOG"
break ;;
[nN])
printf "\n%.0s" {1..2}
@@ -98,6 +104,7 @@ while true; do
# Update the 'kb_layout=' line with the correct layout in the file
awk -v new_layout="$new_layout" '/kb_layout/ {$0 = " kb_layout=" new_layout} 1' config/hypr/UserConfigs/UserSettings.conf > temp.conf
mv temp.conf config/hypr/UserConfigs/UserSettings.conf
+ echo "${NOTE} kb_layout $new_layout configured in settings." 2>&1 | tee -a "$LOG"
break ;;
*)
echo "Please enter either 'y' or 'n'." ;;
@@ -129,7 +136,7 @@ while true; do
done
# Use the selected resolution in your existing script
-echo "You chose $resolution resolution for better Rofi appearance."
+echo "You chose $resolution resolution for better Rofi appearance." 2>&1 | tee -a "$LOG"
# Add your commands based on the resolution choice
if [ "$resolution" == "≤ 1080p" ]; then
@@ -211,21 +218,21 @@ while true; do
[Yy])
echo "${NOTE} Downloading additional wallpapers..."
if git clone "https://github.com/JaKooLit/Wallpaper-Bank.git"; then
- echo "${NOTE} Wallpapers downloaded successfully."
+ echo "${NOTE} Wallpapers downloaded successfully." 2>&1 | tee -a "$LOG"
if cp -R Wallpaper-Bank/wallpapers/* ~/Pictures/wallpapers/ >> "$LOG" 2>&1; then
- echo "${NOTE} Wallpapers copied successfully."
+ echo "${NOTE} Wallpapers copied successfully." 2>&1 | tee -a "$LOG"
rm -rf Wallpaper-Bank 2>&1 # Remove cloned repository after copying wallpapers
break
else
- echo "${ERROR} Copying wallpapers failed" >&2
+ echo "${ERROR} Copying wallpapers failed" 2>&1 | tee -a "$LOG"
fi
else
- echo "${ERROR} Downloading additional wallpapers failed" >&2
+ echo "${ERROR} Downloading additional wallpapers failed" 2>&1 | tee -a "$LOG"
fi
;;
[Nn])
- echo "You chose not to download additional wallpapers." >&2
+ echo "You chose not to download additional wallpapers." 2>&1 | tee -a "$LOG"
break
;;
*)
diff --git a/upgrade.sh b/upgrade.sh
new file mode 100755
index 00000000..22ec17a6
--- /dev/null
+++ b/upgrade.sh
@@ -0,0 +1,145 @@
+#!/bin/bash
+### https://github.com/JaKooLit/JaKooLit
+
+# Set some colors for output messages
+OK="$(tput setaf 2)[OK]$(tput sgr0)"
+ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)"
+NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)"
+WARN="$(tput setaf 166)[WARN]$(tput sgr0)"
+CAT="$(tput setaf 6)[ACTION]$(tput sgr0)"
+ORANGE=$(tput setaf 166)
+YELLOW=$(tput setaf 3)
+RESET=$(tput sgr0)
+
+
+# Create Directory for Upgrade Logs
+if [ ! -d Upgrade-Logs ]; then
+ mkdir Upgrade-Logs
+fi
+
+LOG="Upgrade-Logs/upgrade-$(date +%d-%H%M%S)_dotfiles.log"
+
+# source and target versions
+source_dir="config"
+target_dir="$HOME/.config"
+
+# Specify the update source directories, their corresponding target directories, and their exclusions
+declare -A directories=(
+ ["config/hypr/"]="$HOME/.config/hypr/"
+ ["config/kitty/"]="$HOME/.config/kitty/"
+ ["config/Kvantum/"]="$HOME/.config/Kvantum/"
+ ["config/qt5ct/"]="$HOME/.config/qt5ct"
+ ["config/qt6ct/"]="$HOME/.config/qt6ct/"
+ ["config/rofi/"]="$HOME/.config/rofi/"
+ ["config/swaync/"]="$HOME/.config/swaync/"
+ ["config/waybar/"]="$HOME/.config/waybar/"
+ # Add more directories to compare as needed
+)
+
+# Update the exclusion rules
+declare -A exclusions=(
+ ["config/hypr/"]="--exclude=UserConfigs/ --exclude=UserScripts/"
+ ["config/waybar/"]="--exclude=config --exclude=style.css"
+ ["config/rofi/"]="--exclude=pywal-color/ --exclude=.current_wallpaper"
+ ["config/waybar/"]="--exclude=config --exclude=style.css"
+ # Add more exclusions as needed
+)
+
+# Function to compare directories
+compare_directories() {
+ local source_dir="$1"
+ local target_dir="$2"
+ local exclusion="${exclusions[$source_dir]}" # Get exclusions for the source directory
+
+ # Perform dry-run comparison using rsync with exclusions
+ diff=$(rsync -avn --delete "$source_dir" "$target_dir" $exclusion)
+ echo "$diff"
+}
+
+# Function to create backup of target directory
+create_backup() {
+ local target_dir="$1"
+ local backup_suffix="-b4-upgrade"
+ local target_base=$(basename "$target_dir")
+ local backup_dir="$HOME/.config/${target_base}${backup_suffix}"
+
+ if [ -d "$backup_dir" ]; then
+ echo "$NOTE Updating existing backup of the $target_dir..."
+ rsync -av --delete "$target_dir" "$backup_dir"
+ echo "$NOTE $backup_dir Backup updated successfully." 2>&1 | tee -a "$LOG"
+ else
+ echo "$NOTE Creating backup of the $target_dir..."
+ rsync -av --exclude="${backup_suffix}" "$target_dir" "$backup_dir"/
+ echo "$NOTE $backup_dir Backup created successfully." 2>&1 | tee -a "$LOG"
+ fi
+}
+
+# Check if the version file exists in target directory, if not exit
+target_version_file=$(find "$target_dir/hypr" -name 'v*' | sort -V | tail -n 1)
+if [ -z "$target_version_file" ]; then
+ echo "$ERROR Version number not found in ~/.config/hypr/" 2>&1 | tee -a "$LOG"
+ echo "$ERROR Upgrade your dots first by running ./copy.sh" 2>&1 | tee -a "$LOG"
+ exit 1
+fi
+
+# Get the stored version from the target directory
+stored_version=$(basename "$target_version_file")
+
+# Get the latest version from the source directory
+source_version_file=$(find "$source_dir/hypr" -name 'v*' | sort -V | tail -n 1)
+latest_version=$(basename "$source_version_file")
+
+# Function to compare versions
+version_gt() { test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1"; }
+
+# Compare versions
+if version_gt "$latest_version" "$stored_version"; then
+ echo "$CAT newer version ($latest_version) is available. Do you want to upgrade? (Y/N)" 2>&1 | tee -a "$LOG"
+ read -r answer
+ if [[ "$answer" =~ ^[Yy]$ ]]; then
+ # Loop through directories for comparison
+ for source_folder in "${!directories[@]}"; do
+ target_folder="${directories[$source_folder]}"
+ echo "$YELLOW Comparing directories: $source_folder and $target_folder" $RESET
+ # Compare source and target folders
+ comparison=$(compare_directories "$source_folder" "$target_folder")
+ if [ -n "$comparison" ]; then
+ echo "$NOTE Here are difference of $source_folder and $target_folder:"
+ echo "$comparison"
+
+ printf "\n%.0s" {1..2}
+
+ # Prompt user for action
+ echo "$CAT Do you want to copy files and folders from $source_folder to $target_folder? (Y/N)"
+ read -r answer
+
+ if [[ "$answer" =~ ^[Yy]$ ]]; then
+ # Creating backup of the target folder
+ create_backup "$target_folder"
+
+ printf "\n%.0s" {1..2}
+ # Copy differences from source folder to target folder
+ rsync -av --delete ${exclusions[$source_folder]} "$source_folder" "$target_folder"
+ echo "$NOTE Differences of "$target_folder" copied successfully." 2>&1 | tee -a "$LOG"
+ printf "\n%.0s" {1..2}
+ else
+ echo "$NOTE No changes were made for $target_folder" 2>&1 | tee -a "$LOG"
+ fi
+ else
+ echo "$OK No differences found between $source_folder and $target_folder" 2>&1 | tee -a "$LOG"
+ fi
+ done
+ printf "\n%.0s" {1..2}
+ echo "$NOTE Files updated successfully to version $latest_version" 2>&1 | tee -a "$LOG"
+
+ # Set some files as executable
+ chmod +x ~/.config/hypr/scripts/* 2>&1 | tee -a "$LOG"
+ chmod +x ~/.config/hypr/UserScripts/* 2>&1 | tee -a "$LOG"
+ chmod +x ~/.config/hypr/initial-boot.sh 2>&1 | tee -a "$LOG"
+
+ else
+ echo "$ORANGE Upgrade declined. No files or folders changed" 2>&1 | tee -a "$LOG"
+ fi
+else
+ echo "$OK No upgrade found. The installed version ($stored_version) is up to date with the Hyprland-Dots version ($latest_version)." 2>&1 | tee -a "$LOG"
+fi
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage