✨ feat(update-repo.sh): new amazing automated update script, oh my gah
This commit is contained in:
+116
-29
@@ -1,25 +1,116 @@
|
|||||||
#!/usr/bin/bash
|
#!/usr/bin/bash
|
||||||
|
|
||||||
HYPRLAND_DOTS_DIRS=("hypr" "swaync" "waybar" "anyrun" "wlogout")
|
HYPRLAND_DOTS_DIRS=("hypr" "swaync" "waybar" "anyrun" "wlogout" "wal")
|
||||||
|
|
||||||
printf "\n"
|
printf "\n"
|
||||||
|
|
||||||
echo "Running this script will override data in current repo with user configurations."
|
echo "Running this script may override all data in current repo with current user dotfiles."
|
||||||
echo "This script is intended to be used by repository owner(retrozinndev)"
|
echo "This script is intended to be used by repository owner(retrozinndev)"
|
||||||
|
|
||||||
printf "\n"
|
printf "\n"
|
||||||
|
|
||||||
echo " WARN! Please run this script in it's current directory to avoid problems"
|
echo "Please run this script in it's current directory to avoid problems."
|
||||||
echo "Tip: Press Ctrl + C to stop script"
|
echo "Tip: Press Ctrl + C to stop script at any time"
|
||||||
|
|
||||||
printf "\n"
|
printf "\n"
|
||||||
|
|
||||||
if [ ! -f ./update-repo.sh ]
|
Send_log() {
|
||||||
then
|
output_color=""
|
||||||
echo "[ERROR] Looks like you're not in the repo directory, please run this script from the dotfiles repository directory."
|
|
||||||
printf "Finishing with errors...\n"
|
if [[ $1 =~ ^inf(o)$ ]]
|
||||||
exit 1
|
then
|
||||||
fi
|
output_color="\e[34m"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $1 =~ ^warn(ing)$ ]]
|
||||||
|
then
|
||||||
|
output_color="\e[33m"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $1 =~ ^err(or)$ ]]
|
||||||
|
then
|
||||||
|
output_color="\e[31m"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "[${output_color}$1\e[0m] $2"
|
||||||
|
}
|
||||||
|
|
||||||
|
Check_current_dir() {
|
||||||
|
if ! [[ -f ./update-repo.sh ]]
|
||||||
|
then
|
||||||
|
Send_log "warning" "Looks like you're not in the repo dir! Please run this script from the repo to avoid problems."
|
||||||
|
printf "Quitting...\n"
|
||||||
|
sleep .5
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
Clean_local() {
|
||||||
|
Send_log "info" "Cleaning current repo dotfiles..."
|
||||||
|
# Modify dirs here when adding something new:
|
||||||
|
for dir in ${HYPRLAND_DOTS_DIRS[@]}; do
|
||||||
|
if [[ -d "./$dir" ]]; then
|
||||||
|
rm -rf ./$dir
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Done cleaning."
|
||||||
|
}
|
||||||
|
|
||||||
|
Check_existance() {
|
||||||
|
if [[ -d "./$1" ]]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
Update_local() {
|
||||||
|
for dotsDir in ${HYPRLAND_DOTS_DIRS[@]}; do
|
||||||
|
if [[ -d "$HOME/.config/$dotsDir" ]] then
|
||||||
|
cp -r $HOME/.config/$dotsDir ./$dotsDir
|
||||||
|
else
|
||||||
|
Send_log "warn" "Looks like the ~/.config/$dotsDir dir is in fault! Skipping it..."
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
printf "\nDone updating local repo!\n"
|
||||||
|
}
|
||||||
|
|
||||||
|
Update_remote() {
|
||||||
|
echo "Please type one of the dotfiles you want to push now(only one dir):"
|
||||||
|
ls --color=auto -d -- */
|
||||||
|
printf "Directory: "
|
||||||
|
read chosen_dir
|
||||||
|
if [[ -d $chosen_dir ]]; then
|
||||||
|
git add $chosen_dir
|
||||||
|
echo -n "Would you like to add more dirs to queue? [y/n] "
|
||||||
|
read add_more_dirs
|
||||||
|
if [[ $add_more_dirs =~ y ]]; then
|
||||||
|
Update_remote
|
||||||
|
else
|
||||||
|
echo "Fine then! What will be the commit message? (You can use emojis by typing its name between colons, e.g.: ´:tada:´)"
|
||||||
|
read commit_message
|
||||||
|
echo "Committing your changes..."
|
||||||
|
git commit -m "$commit_message"
|
||||||
|
echo -n "Done! Do you want to push changes now? If not, you'll be redirected to pre-commit process. [y/n] "
|
||||||
|
read push_changes
|
||||||
|
if [[ $push_changes =~ y ]]; then
|
||||||
|
git push
|
||||||
|
echo "Done pushing!!"
|
||||||
|
else
|
||||||
|
Update_remote
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Looks like this directory does not exist! Try taking a look at the dir list."
|
||||||
|
Update_remote
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Check_current_dir
|
||||||
|
|
||||||
echo "Starting in 3... "
|
echo "Starting in 3... "
|
||||||
sleep 1s
|
sleep 1s
|
||||||
@@ -30,29 +121,25 @@ sleep 1s
|
|||||||
|
|
||||||
printf "\n"
|
printf "\n"
|
||||||
|
|
||||||
|
Clean_local
|
||||||
|
|
||||||
echo "[info] Cleaning current repo dotfiles..."
|
# Updates local repository with current user dotfiles
|
||||||
# Modify dirs here when adding something new:
|
Update_local
|
||||||
for dir in ${HYPRLAND_DOTS_DIRS[@]}; do
|
|
||||||
if [ -d "./dir" ]; then
|
|
||||||
rm -rf ./dir
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "Done cleaning."
|
echo -n "Would you like to push selected changes to remote? (You will be prompted to select folders) [y/n] "
|
||||||
|
read push_changes_to_remote
|
||||||
|
|
||||||
for dotsDir in ${HYPRLAND_DOTS_DIRS[@]}; do
|
if [[ $push_changes_to_remote =~ y ]]
|
||||||
if [ -d "$HOME/.config/$dotsDir" ]; then
|
|
||||||
cp -r $HOME/.config/$dotsDir ./$dotsDir
|
|
||||||
else
|
|
||||||
echo "[error] Looks like the ~/.config/$dotsDir dir is in fault! Skipped"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
printf "\nDone! You may now push this to the dotfiles repo!\n"
|
|
||||||
|
|
||||||
if [ -f /bin/git ]
|
|
||||||
then
|
then
|
||||||
|
Update_remote
|
||||||
|
echo "Looks like it's done! Bye bye, have a great day!"
|
||||||
|
else
|
||||||
|
echo "Ok, work has been finished here! Bye bye!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -f "/usr/bin/git" ]]
|
||||||
|
then
|
||||||
|
printf "\nGit status: \n"
|
||||||
git status
|
git status
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user