Files
Dotfiles/install.sh
Keule0010 d46e7c8dad Fixed bugs
Added paru installation
Switchted to hyprlock
2024-04-10 22:22:50 +02:00

164 lines
4.3 KiB
Bash
Executable File

#!/bin/bash
# Vars
DOTFILES_DIR="$HOME/.dotfiles"
CONFIG_DIR="$HOME/.config/dotfiles"
REPO="https://gitea.keuledrive.de/Keule2/Dotfiles.git"
DIST=$(source /etc/os-release && echo $ID)
# Colors
COLOR_RESET='\033[0m'
RED='\033[0;31m'
LGREEN='\033[01;32m'
# Helper Functions
print_header() {
echo -e "${LGREEN}$1${COLOR_RESET}"
}
cmd() {
local DOTFILES_LOG="./error.log"
if eval "$1" 1> /dev/null 2> $DOTFILES_LOG; then
rm "$DOTFILES_LOG"
return 0
fi
echo -e "${RED}"
cat $DOTFILES_LOG
echo -e "${COLOR_RESET}"
rm "$DOTFILES_LOG"
exit 1
}
paru_install() {
if [ -x "$(command -v paru)" ]; then
return
fi
# Install Base-Devel
if [ -z "$(pacman -Q | grep base-devel)" ]; then
print_header "Installing base-devel"
cmd "sudo pacman -S base-devel --noconfirm"
fi
# Install RustUp
if ! [ -x "$(command -v rustup)" ]; then
print_header "Installing rustup"
cmd "sudo pacman -S rustup --noconfirm"
cmd "rustup default stable"
fi
# Instal Paru
FOLDER=$(mktemp -d)
print_header "Installing paru"
cmd "git clone https://aur.archlinux.org/paru.git $FOLDER"
cd $FOLDER
cmd "makepkg -si --noconfirm"
}
arch_install() {
# Install Ansible
if ! [ -x "$(command -v ansible)" ]; then
print_header "Installing ansible"
cmd "sudo pacman -S ansible --noconfirm"
fi
# Install Git
if ! [ -x "$(command -v git)" ]; then
print_header "Installing git"
cmd "sudo pacman -S git --noconfirm"
fi
# Installl Paru
paru_install
# Install PIP
if ! [ -x "$(command -v pip)" ]; then
print_header "Installing pip"
cmd "sudo pacman -S python-pip --noconfirm"
fi
# Install Watchdog
if [ -z "$(pip list | grep watchdog)" ]; then
print_header "Installing watchdog"
cmd "pip install --break-system-packages watchdog"
fi
}
ubuntu_install() {
# Install Ansible
if ! dpkg -s ansible >/dev/null 2>&1; then
print_header "Installing ansible"
cmd "sudo apt-get update"
cmd "sudo apt-get install -y software-properties-common"
cmd "sudo apt-add-repository -y ppa:ansible/ansible"
cmd "sudo apt-get update"
cmd "sudo apt-get install -y ansible"
cmd "sudo apt-get install python3-argcomplete"
cmd "sudo activate-global-python-argcomplete3"
fi
# Install Git
if ! dpkg -s git >/dev/null 2>&1; then
print_header "Installing git"
cmd "sudo apt-get install -y git"
fi
# TODO pip, watchdog
}
update_galaxy() {
local OS=$1
print_header "Installing/Updating ansible-galaxy"
cmd "ansible-galaxy install -r $DOTFILES_DIR/requirements/default.yml"
if [ -f "$DOTFILES_DIR/requirements/$OS.yml" ]; then
cmd "ansible-galaxy install -r $DOTFILES_DIR/requirements/$OS.yml"
fi
}
# Banner
cat << "EOF"
________ __ .___ __ .__ .__
\______ \ _____/ |_ ______ | | ____ _______/ |______ | | | | ___________
| | \ / _ \ __\/ ___/ | |/ \ / ___/\ __\__ \ | | | | _/ __ \_ __ \
| ` ( <_> ) | \___ \ | | | \\___ \ | | / __ \| |_| |_\ ___/| | \/
/_______ /\____/|__| /____ > |___|___| /____ > |__| (____ /____/____/\___ >__|
\/ \/ \/ \/ \/ \/
EOF
# Setup
case $DIST in
arch)
arch_install
;;
ubuntu)
ubuntu_install
;;
*)
echo "Unsupported OS"
exit 1
;;
esac
# Clone repository
if ! [[ -d "$DOTFILES_DIR" ]]; then
print_header "Cloning repo"
cmd "git clone $REPO $DOTFILES_DIR"
else
print_header "Updating repo"
cmd "git -C $DOTFILES_DIR pull"
fi
# Change Working Dir
cd "$DOTFILES_DIR"
# Update Galaxy
update_galaxy $DIST
# Run playbook
if [[ -f "$CONFIG_DIR/vault-password.txt" ]]; then
if [[ -f "$CONFIG_DIR/values.yml" ]]; then
ansible-playbook --diff -v --ask-become-pass --extra-vars "@$CONFIG_DIR/values.yml" --vault-password-file "$CONFIG_DIR/vault-password.txt" "$DOTFILES_DIR/main.yml" "$@"
else
ansible-playbook --diff -v --ask-become-pass --vault-password-file "$CONFIG_DIR/vault-password.txt" "$DOTFILES_DIR/main.yml" "$@"
fi
elif [[ -f "$CONFIG_DIR/values.yml" ]]; then
ansible-playbook --diff -v --ask-become-pass --extra-vars "@$CONFIG_DIR/values.yml" "$DOTFILES_DIR/main.yml" "$@"
else
ansible-playbook --diff -v --ask-become-pass "$DOTFILES_DIR/main.yml" "$@"
fi