mirror of
https://github.com/jessebot/dot_files.git
synced 2025-10-01 01:48:43 +00:00
268 lines
10 KiB
Bash
Executable file
268 lines
10 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# just a quick script to install some reqs for onboardme
|
|
# works on Debian (Bookworm) based distros and macOS (13.0.1 and later)
|
|
# Checks for: brew, git, and python3.11
|
|
|
|
export XDG_CONFIG_HOME="$HOME/.config"
|
|
export XDG_CACHE_HOME="$HOME/.cache"
|
|
export XDG_DATA_HOME="$HOME/.local/share"
|
|
export XDG_STATE_HOME="$HOME/.local/state"
|
|
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~ LinuxBrew PATH ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #
|
|
if [[ $(uname) == *"Linux"* ]]; then
|
|
export XDG_DATA_HOME="$HOME/.local"
|
|
# iptables on debian is here
|
|
export PATH=$PATH:/usr/sbin:/usr/share
|
|
|
|
# pip packages with command line tools install here by default with apt installed python
|
|
export PATH=$PATH:$XDG_DATA_HOME/bin
|
|
|
|
# this relative is used for both macOS and Debian based distros
|
|
pip_path_suffix="lib/python$PYTHON_VERSION/site-packages"
|
|
|
|
# apt installed location of pip installed python3.x packages
|
|
pip_packages="$HOME/.local/$pip_path_suffix"
|
|
|
|
# not working in debian via onboardme :( not sure why
|
|
# export PYTHONUSERBASE=$XDG_DATA_HOME
|
|
|
|
# make python do it's cache in ~/.cache/python
|
|
export PYTHONPYCACHEPREFIX=$XDG_CACHE_HOME
|
|
fi
|
|
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ macOS PATH ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #
|
|
# powerline - a fancy extensible prompt: https://powerline.readthedocs.io
|
|
if [[ $(uname) == *"Darwin"* ]]; then
|
|
# make python do it's cache in ~/.cache/python
|
|
export PYTHONPYCACHEPREFIX=$XDG_CACHE_HOME/python
|
|
# put python data into $HOME/.local/share/python
|
|
export PYTHONUSERBASE=$XDG_DATA_HOME/python
|
|
echo 'export XDG_DATA_HOME="$HOME/.local/share"' >> ~/.bash_profile
|
|
echo 'export PYTHONUSERBASE=$XDG_DATA_HOME/python' >> ~/.bash_profile
|
|
|
|
pip_packages="$XDG_DATA_HOME/python/lib/python/site-packages"
|
|
# this is for python XDG spec stuff
|
|
export PATH="$PYTHONUSERBASE/bin:$PATH"
|
|
echo 'export PATH="$PYTHONUSERBASE/bin:$PATH"' >> ~/.bash_profile
|
|
|
|
if [ $(uname -a | grep arm > /dev/null ; echo $?) -eq 0 ]; then
|
|
# On apple silicon: brew default installs here
|
|
export PATH=/opt/homebrew/bin:$PATH
|
|
echo 'export PATH=/opt/homebrew/bin:$PATH' >> ~/.bash_profile
|
|
fi
|
|
fi
|
|
|
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Python ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
# python default install location when you: pip$VERSION install --user package
|
|
export PATH=$PATH:$HOME/.local/bin:/usr/local/bin
|
|
|
|
# Run py cmds in this file b4 the 1st prompt is displayed in interactive mode
|
|
export PYTHONSTARTUP=$XDG_CONFIG_HOME/python/interactive_startup.py
|
|
|
|
# extremely simply loading bar
|
|
function simple_loading_bar() {
|
|
echo ""
|
|
echo " "
|
|
for i in $(seq 1 $1); do
|
|
echo -n "❤︎ ";
|
|
sleep 1
|
|
done
|
|
echo ""
|
|
}
|
|
|
|
OS=$(uname)
|
|
|
|
echo -e "-------------------------------- \033[94m 🛋️ Comfy Warning \033[00m -------------------------------"
|
|
echo "Before we begin, please make sure you're on a wired connection, or sitclose to the wifi. This "
|
|
echo "might take a while if you're a fresh OS install and you'll need to present to enter your password "
|
|
echo "for package installs, so grab some tea and get comfy :3"
|
|
printf "\nHere's some relaxing music: https://youtu.be/-5KAN9_CzSA"
|
|
while true; do
|
|
printf "\n\n"
|
|
read -p "Are you ready to get started? Do you have a nice cup of ☕? [y/n] " answer
|
|
if [ "$answer" != "y" ]; then
|
|
printf "\nThat's totally reasonable. You take your time, and I will be here."
|
|
simple_loading_bar 5
|
|
else
|
|
break
|
|
fi
|
|
done
|
|
|
|
echo -e "\n-------------------------------- \033[94m 🎬 Beginning Setup \033[00m -------------------------------"
|
|
echo ""
|
|
if [[ "$OS" == *"Linux"* ]]; then
|
|
echo -e "---------------------------- \033[94m Updating existing apt packages \033[00m --------------------"
|
|
DEBIAN_FRONTEND=noninteractive sudo apt-get update; sudo apt-get -y upgrade
|
|
echo -e "\033[92m apt updated/upgraded :3 \033[00m"
|
|
fi
|
|
|
|
# git should be default installed on macOS Monterey :shrug:
|
|
echo -e "-------------------------------- \033[94m Checking for Git \033[00m ------------------------------"
|
|
which git > /dev/null
|
|
git_return_code=$?
|
|
if [ $git_return_code -eq 0 ]; then
|
|
echo -e "\033[92mGit already installed :3 \033[00m"
|
|
else
|
|
echo "Git not installed or in path, attempting to install git..."
|
|
# we use *"linux"* because linux2 is a possibility, and who knows what else
|
|
if [[ "$OS" == "Linux"* ]]; then
|
|
DEBIAN_FRONTEND=noninteractive sudo apt-get install -y git
|
|
git_return_code=$?
|
|
if [ $git_return_code -ne 0 ]; then
|
|
echo "Git didn't install. This may be because you don't have main branch"
|
|
echo "software enabled on Debian. You can enable that via the GUI under:"
|
|
echo "Software & Updates (Software-properties-gtk) > Debian Software"
|
|
exit
|
|
fi
|
|
fi
|
|
# wait.... how can this work if brew doesn't work yet.... 🤔
|
|
if [ "$OS" == "Darwin" ]; then
|
|
echo "running: brew install git"
|
|
brew install git
|
|
fi
|
|
echo -e "\033[92mGit Installed :3 \033[00m"
|
|
fi
|
|
|
|
echo "running: git config --global init.defaultBranch main"
|
|
git config --global init.defaultBranch main
|
|
|
|
# Make sure xcode is present on macOS, since it needs to be
|
|
# re-installed when upgrading from 12.x -> 13.x
|
|
if [ "$OS" == "Darwin" ]; then
|
|
echo -e "-------------------------------- \033[94m Ensuring Xcode is present \033[00m ------------------------------"
|
|
echo "running: xcode-select --install"
|
|
xcode-select --install
|
|
fi
|
|
|
|
|
|
echo -e "------------------------------- \033[94m Checking for Brew \033[00m ------------------------------\n"
|
|
|
|
echo "Doing some linux brew path/env checking..."
|
|
|
|
# source the existing bashrc, just in case
|
|
if [ -f "~/.bashrc" ]; then
|
|
. ~/.bashrc
|
|
elif [ -f "~/.bash_profile" ]; then
|
|
. ~/.bash_profile
|
|
fi
|
|
|
|
env | grep -i "brew"
|
|
brew_return_code=$?
|
|
|
|
# if this still isn't in our path, export it and source this bashrc
|
|
if [ $brew_return_code -ne 0 ]; then
|
|
if [[ "$OS" == *"Linux"* ]]; then
|
|
# HomeBrew on Linux needs all of this to work
|
|
export HOMEBREW_PREFIX=/home/linuxbrew/.linuxbrew
|
|
export HOMEBREW_CELLAR=/home/linuxbrew/.linuxbrew/Cellar
|
|
export HOMEBREW_REPOSITORY=/home/linuxbrew/.linuxbrew/Homebrew
|
|
export MANPATH=$MANPATH:/home/linuxbrew/.linuxbrew/share/man
|
|
export INFOPATH=$INFOPATH:/home/linuxbrew/.linuxbrew/share/info
|
|
export PATH=$PATH:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin
|
|
|
|
echo "Linuxbrew isn't in your path. Let's get that installed :)"
|
|
# make sure this is all in the bashrc for new shells
|
|
echo "export HOMEBREW_PREFIX=/home/linuxbrew/.linuxbrew" >> ~/.bashrc
|
|
echo "export HOMEBREW_CELLAR=/home/linuxbrew/.linuxbrew/Cellar" >> ~/.bashrc
|
|
echo "export HOMEBREW_REPOSITORY=/home/linuxbrew/.linuxbrew/Homebrew" >> ~/.bashrc
|
|
echo "export MANPATH=$MANPATH:/home/linuxbrew/.linuxbrew/share/man" >> ~/.bashrc
|
|
echo "export INFOPATH=$INFOPATH:/home/linuxbrew/.linuxbrew/share/info" >> ~/.bashrc
|
|
echo "PATH=$PATH:/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin" >> ~/.bashrc
|
|
# source the bashrc, for this shell
|
|
. ~/.bashrc
|
|
else
|
|
# check if this an M1 mac or not
|
|
uname -a | grep arm > /dev/null
|
|
M1=$?
|
|
if [ $M1 -eq 0 ]; then
|
|
# for the M1/M2 brew default installs here
|
|
echo "PATH=/opt/homebrew/bin:$PATH" >> ~/.bash_profile
|
|
fi
|
|
# source the bashrc, for this shell
|
|
. ~/.bash_profile
|
|
fi
|
|
fi
|
|
|
|
which brew > /dev/null
|
|
brew_return_code=$?
|
|
if [ $brew_return_code -ne 0 ]; then
|
|
echo "Installing brew really quick, this will require your credentials for sudo abilities..."
|
|
NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
echo -e "\033[92mBrew installed :3 \033[00m"
|
|
else
|
|
echo -e "\033[92mBrew already installed :3 \033[00m"
|
|
fi
|
|
|
|
|
|
echo -e "--------------------------\033[94m Checking for Python3 and pip3\033[00m -------------------------"
|
|
|
|
if [[ "$OS" == *"Linux"* ]]; then
|
|
echo ""
|
|
echo "We will remove /usr/lib/python3.*/EXTERNALLY-MANAGED until Debian Bookworm decides on a better way forward with virtual envs."
|
|
echo "See: https://salsa.debian.org/cpython-team/python3/-/blob/master/debian/README.venv"
|
|
if [ -e /usr/lib/python3.*/EXTERNALLY-MANAGED ]; then
|
|
sudo rm /usr/lib/python3.*/EXTERNALLY-MANAGED
|
|
fi
|
|
fi
|
|
|
|
# check to make sure we have python3 and pip3 installed
|
|
which python3.11 > /dev/null
|
|
py_return_code=$?
|
|
|
|
if [ $py_return_code -ne 0 ]; then
|
|
if [ "$OS" == "Darwin" ]; then
|
|
echo "Installing Python3.11 via brew..."
|
|
brew install python@3.11
|
|
echo -e "\033[92mPython3.11 installed :3 \033[00m"
|
|
else
|
|
echo "Installing Python3.11 via apt..."
|
|
DEBIAN_FRONTEND=noninteractive && \
|
|
sudo apt-get install -y software-properties-common && \
|
|
sudo add-apt-repository -y ppa:deadsnakes/ppa && \
|
|
sudo apt install -y python3.11 && \
|
|
curl -sS https://bootstrap.pypa.io/get-pip.py | python3.11
|
|
echo 'export PATH="$PATH:/home/friend/.local/bin/"' >> ~/.bashrc
|
|
. ~/.bashrc
|
|
echo -e "\033[92mPython3.11 installed :3 \033[00m"
|
|
fi
|
|
else
|
|
echo -e "\033[92mPython3.11 already installed :3 \033[00m"
|
|
which pip3.11 > /dev/null
|
|
pip_return_code=$?
|
|
if [ $pip_return_code -ne 0 ]; then
|
|
echo -e "\033[92mInstalling pip via apt... \033[00m"
|
|
DEBIAN_FRONTEND=noninteractive && \
|
|
sudo apt-get update && \
|
|
sudo apt-get install -y python3-pip python3-venv && \
|
|
curl -sS https://bootstrap.pypa.io/get-pip.py | python3.11
|
|
echo 'export PATH="$PATH:/home/friend/.local/bin/"' >> ~/.bashrc
|
|
. ~/.bashrc
|
|
echo -e "\033[92mPip3.11 installed :3 \033[00m"
|
|
fi
|
|
fi
|
|
|
|
echo -e "--------------------------\033[94m Installing OnBoardMe :D \033[00m -------------------------"
|
|
|
|
|
|
pip3.11 install --upgrade --user onboardme
|
|
pip_install_return_code=$?
|
|
|
|
if [ $pip_install_return_code -ne 0 ]; then
|
|
echo "Something went wrong with the installation of onboardme. :("
|
|
else
|
|
echo ""
|
|
echo -e "------------------------------ \033[92mSuccess~! ^O^\033[00m -----------------------------------"
|
|
echo ""
|
|
|
|
# source the existing bashrc, just in case
|
|
if [[ "$OS" == *"Linux"* ]]; then
|
|
echo -e "Please run:\033[92m source ~/.bashrc \033[00m"
|
|
else
|
|
echo -e "Please run:\033[92m source ~/.bash_profile \033[00m"
|
|
fi
|
|
|
|
echo ""
|
|
echo -e "✨ Then you can try running the following:"
|
|
echo "onboardme --help"
|
|
echo ""
|
|
fi
|