remote_test/remote_setup.sh

54 lines
1.8 KiB
Bash

#!/bin/bash
# List the packages that your custom environment requires.
REQUIRED_PACKAGES=(neovim tmux)
# Array to record packages that the script installs.
installed_by_script=()
# Function to ensure required packages are installed.
ensure_packages() {
local to_install=()
for pkg in "${REQUIRED_PACKAGES[@]}"; do
# Check if the package is installed.
if ! dpkg -s "$pkg" >/dev/null 2>&1; then
to_install+=("$pkg")
fi
done
if [ ${#to_install[@]} -gt 0 ]; then
echo "Installing missing packages: ${to_install[*]}"
sudo apt update && sudo apt install -y "${to_install[@]}"
# Record these packages for later removal.
installed_by_script+=("${to_install[@]}")
fi
}
# Function to remove only the packages that were installed by the script.
cleanup_packages() {
if [ ${#installed_by_script[@]} -gt 0 ]; then
echo "Removing packages installed by the script: ${installed_by_script[*]}"
sudo apt remove -y "${installed_by_script[@]}"
sudo apt autoremove -y
fi
}
# Create a temporary directory for your custom dotfiles.
DOTFILES_DIR=$(mktemp -d)
# Set up a trap that will run when the session ends (EXIT signal).
# This trap cleans up the temporary dotfiles directory and removes the packages we installed.
trap 'cleanup_packages; rm -rf "$DOTFILES_DIR"' EXIT
# Clone your dotfiles repository into the temporary directory.
git clone https://git.bitnest.dev/stephan/remote_test "$DOTFILES_DIR"
# Ensure that any required packages are installed.
ensure_packages
# Optionally, override default commands to use your custom configurations.
alias vim="vim -u $DOTFILES_DIR/.vimrc"
alias tmux="tmux -f $DOTFILES_DIR/.tmux.conf"
# Launch a new interactive bash session that uses your custom bashrc.
exec bash --rcfile "$DOTFILES_DIR/.bashrc"