Improve setup and update scripts pt.2
This commit is contained in:
52
scripts/setup.sh
Normal file → Executable file
52
scripts/setup.sh
Normal file → Executable file
@ -3,29 +3,55 @@
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||
TOOLKIT_DIR="$SCRIPT_DIR"/..
|
||||
|
||||
# Load default shell scripts
|
||||
. $SCRIPT_DIR/../sh/load.sh
|
||||
# Load package manager script
|
||||
. "$SCRIPT_DIR"/util/pkg-mgr.sh
|
||||
|
||||
update_default_shell() {
|
||||
/usr/sbin/usermod -sf /usr/bin/zsh $1
|
||||
# Load color script
|
||||
. "$SCRIPT_DIR"/util/color.sh
|
||||
|
||||
update_user_shell() {
|
||||
/usr/sbin/usermod -s /usr/bin/zsh "$1"
|
||||
}
|
||||
|
||||
install_shell_config() {
|
||||
/usr/bin/ln -s /etc/toolkit/sh/.zshrc $1
|
||||
install_user_config() {
|
||||
/usr/bin/ln -s /etc/toolkit/sh/"$1" "$2"
|
||||
}
|
||||
|
||||
print_info Installing necessary packages...
|
||||
|
||||
install_package zsh
|
||||
|
||||
update_default_shell root
|
||||
update_default_shell coby
|
||||
print_info Setting up user shells...
|
||||
|
||||
install_shell_config /root/.zshrc
|
||||
install_shell_config /home/coby/.zshrc
|
||||
update_user_shell root
|
||||
update_user_shell coby
|
||||
|
||||
install_user_config .zshrc /root/.
|
||||
install_user_config .zshrc /home/coby/.
|
||||
|
||||
install_user_config .vimrc /root/.
|
||||
install_user_config .vimrc /home/coby/.
|
||||
|
||||
# Replace old ssh server config
|
||||
rm /etc/ssh/sshd_config
|
||||
ln -sf /etc/toolkit/sshd/sshd_config /etc/ssh/.
|
||||
if [[ -d /etc/ssh ]]; then
|
||||
ln -sf "$TOOLKIT_DIR"/ssh/sshd_config /etc/ssh/.
|
||||
elif
|
||||
print_warn /etc/ssh does not exist, failed to install sshd config
|
||||
fi
|
||||
|
||||
# Install cronjobs
|
||||
if [[ -d /etc/cron.d ]]; then
|
||||
ln -sf "$TOOLKIT_DIR"/cron/* /etc/cron.d/.
|
||||
elif
|
||||
print_warn /etc/cron.d does not exist, failed to install cronjobs
|
||||
print_warn Are you running a debian-based distro?
|
||||
fi
|
||||
|
||||
print_info Installing necessary submodules...
|
||||
|
||||
# Pull submodules
|
||||
. $SCRIPT_DIR/update.sh
|
||||
git submodule update --init --recursive
|
||||
|
||||
print_info Setup complete
|
||||
|
@ -1,13 +0,0 @@
|
||||
# Setup tasks
|
||||
|
||||
- Determine which package manager to use based on distro
|
||||
|
||||
- Update & upgrade system
|
||||
|
||||
- Install necessary packages (zsh)
|
||||
|
||||
- Ask which user wants shell and dotfiles & install them
|
||||
|
||||
- Ask to install cronjobs & install them
|
||||
|
||||
- Ask to install SSH configurations & install them
|
@ -1,16 +1,21 @@
|
||||
#!/bin/bash
|
||||
|
||||
# If repo isn't out of date, abort update
|
||||
# Only begin update process if necessary
|
||||
if [[ -z "$(git remote show origin | grep "out of date")" ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||
TOOLKIT_DIR="$SCRIPT_DIR"/..
|
||||
|
||||
# Load color script
|
||||
. "$SCRIPT_DIR"/util/color.sh
|
||||
|
||||
last_hash=$( git rev-parse HEAD )
|
||||
|
||||
recent_hashes=$( git log --format=format:%H | grep -B 100 $last_hash)
|
||||
|
||||
print_info Resetting repo and pulling latest commits...
|
||||
|
||||
# Resets the repo to last state
|
||||
git reset --hard
|
||||
|
||||
@ -24,8 +29,11 @@ git submodule update --init --recursive
|
||||
git clean -fd --force
|
||||
|
||||
# Runs patch scripts to ensure machine state
|
||||
# is up to date
|
||||
# matches toolkit state
|
||||
while IFS= read -r hash; do
|
||||
short_hash=$( echo $hash | cut -c -7 )
|
||||
/usr/bin/bash "$SCRIPT_DIR"/../patches/*-"$short_hash".sh 2>/dev/null
|
||||
short_hash=$( echo "$hash" | cut -c -7 )
|
||||
print_info Running patch script \'"$short_hash"\'
|
||||
. "$SCRIPT_DIR"/../patches/*-"$short_hash".sh 2>/dev/null
|
||||
done <<< "$recent_hashes"
|
||||
|
||||
print_info Update complete
|
||||
|
27
scripts/util/color.sh
Executable file
27
scripts/util/color.sh
Executable file
@ -0,0 +1,27 @@
|
||||
#!/bin/bash
|
||||
|
||||
BLACK="\033[30m"
|
||||
RED="\033[31m"
|
||||
GREEN="\033[32m"
|
||||
YELLOW="\033[33m"
|
||||
BLUE="\033[34m"
|
||||
PINK="\033[35m"
|
||||
CYAN="\033[36m"
|
||||
WHITE="\033[37m"
|
||||
RESET="\033[0;39m"
|
||||
|
||||
print_info() {
|
||||
echo -e "$RESET"["$BLUE"i"$RESET"] $@
|
||||
}
|
||||
|
||||
print_warn () {
|
||||
echo -e "$RESET"["$YELLOW"!"$RESET"] $@
|
||||
}
|
||||
|
||||
print_error () {
|
||||
echo -e "$RESET"["$RED"x"$RESET"] $@
|
||||
}
|
||||
|
||||
print_info Hello
|
||||
print_warn Hello
|
||||
print_error Hello
|
23
scripts/util/pkg-mgr.sh
Executable file
23
scripts/util/pkg-mgr.sh
Executable file
@ -0,0 +1,23 @@
|
||||
declare -A osInfo;
|
||||
|
||||
osInfo[/etc/redhat-release]=yum
|
||||
osInfo[/etc/arch-release]=pacman
|
||||
osInfo[/etc/gentoo-release]=emerge
|
||||
osInfo[/etc/SuSE-release]=zypp
|
||||
osInfo[/etc/debian_version]=apt-get
|
||||
osInfo[/etc/alpine-release]=apk
|
||||
|
||||
for key val in "${(@kv)osInfo}"; do
|
||||
if [[ -f $key ]]; then
|
||||
PACKAGE_MANAGER=$val
|
||||
fi
|
||||
done
|
||||
|
||||
install_package() {
|
||||
if [ "$PACKAGE_MANAGER" == "yum" ]; then yum install -y "$@"
|
||||
elif [ "$PACKAGE_MANAGER" == "pacman" ]; then pacman -S --noconfirm "$@"
|
||||
elif [ "$PACKAGE_MANAGER" == "emerge" ]; then emerge "$@"
|
||||
elif [ "$PACKAGE_MANAGER" == "zypp" ]; then zypper install "$@"
|
||||
elif [ "$PACKAGE_MANAGER" == "apt-get" ]; then apt-get install -y "$@"
|
||||
elif [ "$PACKAGE_MANAGER" == "apk" ]; then apk add "$@"; fi
|
||||
}
|
Reference in New Issue
Block a user