This commit is contained in:
Stephan Raabe 2023-11-22 12:01:41 +01:00
parent 3f1ec6a90f
commit dcadc82c44
6 changed files with 121 additions and 59 deletions

View File

@ -1,2 +0,0 @@
#!/bin/sh
rsync -av --exclude-from=excludes.txt ../ ~/dotfiles/

13
.dev/sync.sh Executable file
View File

@ -0,0 +1,13 @@
#!/bin/sh
# Execute the script with ./sync version e.g., ./sync 2.5.2
if [ ! -z $1 ] ;then
if [ -d ~/dotfiles-versions/"$1" ] ;then
echo "Folder exists. Start rsync now ..."
rsync -avzh --exclude-from=excludes.txt ~/dotfiles-versions/$1/ ~/dotfiles
else
echo "Folder ~/dotfiles-versions/$1 not found."
fi
else
echo "No folder specified. Please use ./sync folder"
fi

View File

@ -13,7 +13,6 @@ cat <<"EOF"
EOF EOF
echo -e "${NONE}" echo -e "${NONE}"
echo "Preparing temporary folders for the installation." echo "Preparing temporary folders for the installation."
echo ""
if [ ! -d ~/dotfiles-versions ]; then if [ ! -d ~/dotfiles-versions ]; then
mkdir ~/dotfiles-versions mkdir ~/dotfiles-versions
echo "~/dotfiles-versions folder created." echo "~/dotfiles-versions folder created."
@ -23,11 +22,9 @@ if [ ! -d ~/dotfiles-versions/$version ]; then
echo "~/dotfiles-versions/$version folder created." echo "~/dotfiles-versions/$version folder created."
else else
echo "The folder ~/dotfiles-versions/$version already exists from previous installations." echo "The folder ~/dotfiles-versions/$version already exists from previous installations."
echo ""
rm -fr ~/dotfiles-versions/$version rm -fr ~/dotfiles-versions/$version
mkdir ~/dotfiles-versions/$version mkdir ~/dotfiles-versions/$version
echo "Clean build prepared for the installation." echo "Clean build prepared for the installation."
echo ""
fi fi
rsync -a --exclude-from=.install/excludes.txt . ~/dotfiles-versions/$version/ rsync -a --exclude-from=.install/excludes.txt . ~/dotfiles-versions/$version/
echo "dotfiles $version successfully prepared in ~/dotfiles-versions/$version/" echo "dotfiles $version successfully prepared in ~/dotfiles-versions/$version/"

160
.install/restore.sh Normal file → Executable file
View File

@ -2,7 +2,110 @@
# Restore # Restore
# ------------------------------------------------------ # ------------------------------------------------------
restorelist=""
_showRestoreOptions() {
echo "The following configurations can be transferred into the new installation:"
echo "(SPACE = select/unselect a profile. RETURN = confirm. No selection = CANCEL)"
echo ""
restorelist=""
if [ -f ~/dotfiles/.bashrc ]; then
restorelist+="~/dotfiles/.bashrc "
fi
if [[ $profile == *"Hyprland"* ]]; then
if [ -f ~/dotfiles/hypr/conf/keyboard.conf ]; then
restorelist+="~/dotfiles/hypr/conf/keyboard.conf "
fi
if [ -f ~/dotfiles/hypr/conf/keybindings.conf ]; then
restorelist+="~/dotfiles/hypr/conf/keybindings.conf "
fi
if [ -f ~/dotfiles/hypr/conf/monitor.conf ] && [ -d ~/dotfiles/hypr/conf/monitor/ ]; then
restorelist+="~/dotfiles/hypr/conf/monitor.conf "
fi
if [ -f ~/dotfiles/hypr/conf/animation.conf ] && [ -d ~/dotfiles/hypr/conf/animation/ ]; then
restorelist+="~/dotfiles/hypr/conf/animation.conf "
fi
if [ -f ~/dotfiles/hypr/conf/decoration.conf ] && [ -d ~/dotfiles/hypr/conf/decorations/ ]; then
restorelist+="~/dotfiles/hypr/conf/decoration.conf "
fi
if [ -f ~/dotfiles/hypr/conf/window.conf ] && [ -d ~/dotfiles/hypr/conf/windows/ ]; then
restorelist+="~/dotfiles/hypr/conf/window.conf "
fi
fi
if [[ $profile == *"Qtile"* ]]; then
if [ -f ~/dotfiles/qtile/conf/keyboard.py ]; then
restorelist+="~/dotfiles/qtile/conf/keyboard.py "
fi
fi
if [ ! -z "$restorelist" ] ;then
restorelist+="All"
fi
restoreselect=$(gum choose --no-limit --cursor-prefix "( ) " --selected-prefix "(x) " --unselected-prefix "( ) " $restorelist)
if [ ! -z "$restoreselect" ] ;then
echo "Selected to restore:"
echo "$restoreselect"
echo ""
confirmrestore=$(gum choose "Start restore" "Change restore" "Cancel restore")
if [ "$confirmrestore" == "Start restore" ] ;then
_startRestore
elif [ "$confirmrestore" == "Change restore" ]; then
_showRestoreOptions
else
echo "Restore skipped."
return 0
fi
else
echo "No files selected to restore."
confirmrestore=$(gum choose "Change restore" "Cancel restore")
if [ "$confirmrestore" == "Change restore" ]; then
echo ""
_showRestoreOptions
else
echo "Restore skipped."
return 0
fi
fi
}
_startRestore() {
if [[ $restoreselect == *"~/dotfiles/.bashrc"* ]] || [[ $restoreselect == *"All"* ]] ; then
cp ~/dotfiles/.bashrc ~/dotfiles-versions/$version/
echo ".bashrc restored!"
fi
if [[ $restoreselect == *"~/dotfiles/hypr/conf/keyboard.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then
cp ~/dotfiles/hypr/conf/keyboard.conf ~/dotfiles-versions/$version/hypr/conf/
echo "Hyprland keyboard.conf restored!"
fi
if [[ $restoreselect == *"~/dotfiles/hypr/conf/monitor.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then
cp ~/dotfiles/hypr/conf/monitor.conf ~/dotfiles-versions/$version/hypr/conf/
echo "Hyprland monitor.conf restored!"
fi
if [[ $restoreselect == *"~/dotfiles/hypr/conf/keybindings.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then
cp ~/dotfiles/hypr/conf/keybindings.conf ~/dotfiles-versions/$version/hypr/conf/
echo "Hyprland keybindings.conf restored!"
fi
if [[ $restoreselect == *"~/dotfiles/hypr/conf/animation.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then
cp ~/dotfiles/hypr/conf/animation.conf ~/dotfiles-versions/$version/hypr/conf/
echo "Hyprland animation.conf restored!"
fi
if [[ $restoreselect == *"~/dotfiles/hypr/conf/decoration.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then
cp ~/dotfiles/hypr/conf/decoration.conf ~/dotfiles-versions/$version/hypr/conf/
echo "Hyprland decoration.conf restored!"
fi
if [[ $restoreselect == *"~/dotfiles/hypr/conf/window.conf"* ]] || [[ $restoreselect == *"All"* ]] ; then
cp ~/dotfiles/hypr/conf/window.conf ~/dotfiles-versions/$version/hypr/conf/
echo "Hyprland keybindings.conf restored!"
fi
if [[ $restoreselect == *"~/dotfiles/qtile/conf/keyboard.py"* ]] || [[ $restoreselect == *"All"* ]] ; then
cp ~/dotfiles/qtile/conf/keyboard.py ~/dotfiles-versions/$version/qtile/conf/
echo "Qtile keyboard.py restored!"
fi
restored=1
return 0
}
if [ -d ~/dotfiles ]; then if [ -d ~/dotfiles ]; then
echo -e "${GREEN}" echo -e "${GREEN}"
cat <<"EOF" cat <<"EOF"
____ _ ____ _
@ -16,59 +119,10 @@ echo -e "${NONE}"
restored=0 restored=0
echo "The script will try to restore existing configurations." echo "The script will try to restore existing configurations."
echo "PLEASE NOTE: Restoring is not possible with version < 2.5 of the dotfiles." echo "PLEASE NOTE: Restoring is not possible with version < 2.5 of the dotfiles."
echo "In that case, please use the autamated backup or create your own backup manually." echo "In that case, please use the automated backup or create your own backup manually."
echo "" echo ""
echo "The following configurations can be transferred into the new installation."
if [ -f ~/dotfiles/.bashrc ]; then _showRestoreOptions
echo ".bashrc file: ~/dotfiles/.bashrc"
fi
if [[ $profile == *"Hyprland"* ]]; then
if [ -f ~/dotfiles/hypr/conf/keyboard.conf ]; then
echo "Hyprland keyboard layout: ~/dotfiles/hypr/conf/keyboard.conf"
fi
if [ -f ~/dotfiles/hypr/conf/monitor.conf ]; then
echo "Hyprland monitor setup: ~/dotfiles/hypr/conf/monitor.conf"
fi
if [ -f ~/dotfiles/hypr/conf/keybindings.conf ]; then
echo "Hyprland keybindings: ~/dotfiles/hypr/conf/keybindings.conf"
fi
fi
if [[ $profile == *"Qtile"* ]]; then
if [ -f ~/dotfiles/qtile/conf/keyboard.py ]; then
echo "Qtile keyboard layout: ~/dotfiles/qtile/conf/keyboard.py"
fi
fi
echo ""
if gum confirm "Do you want to restore the files now and use it on your new installation?" ;then
if [ -f ~/dotfiles/.bashrc ]; then
cp ~/dotfiles/.bashrc ~/dotfiles-versions/$version/
echo ".bashrc restored!"
fi
if [[ $profile == *"Hyprland"* ]]; then
if [ -f ~/dotfiles/hypr/conf/keyboard.conf ]; then
cp ~/dotfiles/hypr/conf/keyboard.conf ~/dotfiles-versions/$version/hypr/conf/
echo "Hyprland keyboard.conf restored!"
fi
if [ -f ~/dotfiles/hypr/conf/monitor.conf ]; then
cp ~/dotfiles/hypr/conf/monitor.conf ~/dotfiles-versions/$version/hypr/conf/
echo "Hyprland monitor.conf restored!"
fi
if [ -f ~/dotfiles/hypr/conf/keybindings.conf ]; then
cp ~/dotfiles/hypr/conf/keybindings.conf ~/dotfiles-versions/$version/hypr/conf/
echo "Hyprland keybindings.conf restored!"
fi
fi
if [[ $profile == *"Qtile"* ]]; then
if [ -f ~/dotfiles/qtile/conf/keyboard.py ]; then
cp ~/dotfiles/qtile/conf/keyboard.py ~/dotfiles-versions/$version/qtile/conf/
echo "Qtile keyboard.py restored!"
fi
fi
restored=1
elif [ $? -eq 130 ]; then
exit 130
else
echo "Restore skipped"
fi
echo "" echo ""
fi fi

View File