feat: mac install support
This commit is contained in:
@@ -5,17 +5,21 @@ set -eo pipefail
|
||||
# Script to run all install scripts contained in install.d
|
||||
#
|
||||
|
||||
# Prevent running as root and check sudo access
|
||||
# Prevent running as root
|
||||
if [[ $EUID -eq 0 ]]; then
|
||||
echo "Failed: Running as sudo. Please run as user"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Ensure sudo credentials are cached
|
||||
sudo -v
|
||||
|
||||
# Set up directory variables
|
||||
dir=$(dirname "$0")
|
||||
install_dir="$dir/install.d"
|
||||
export DOTFILES=$(dirname "$dir")
|
||||
|
||||
# Set up log destination
|
||||
if [[ -z "$LOG_TARGET" ]]; then
|
||||
timestamp=$(date +%Y-%m-%dT%H:%M:%S)
|
||||
uuid=$(
|
||||
@@ -29,7 +33,14 @@ if [[ -z "$LOG_TARGET" ]]; then
|
||||
else
|
||||
log_target="$LOG_TARGET"
|
||||
fi
|
||||
touch "$log_target"
|
||||
if [[ ! -f "$log_target" ]]; then
|
||||
echo "Failed: Unable to create log file \"$log_target\""
|
||||
exit 1
|
||||
fi
|
||||
log_abs_target=$(readlink -f "$log_target")
|
||||
|
||||
# Run install scripts
|
||||
install() {
|
||||
echo "Running \"$(basename "$0")\" at \"$(date)\""
|
||||
echo "Running as \"$(whoami)\" on \"$(hostname)\""
|
||||
@@ -42,8 +53,9 @@ install() {
|
||||
unset script_name
|
||||
done
|
||||
}
|
||||
echo "install: Logging to \"$log_abs_target\""
|
||||
install 2>&1 | tee "$log_abs_target"
|
||||
|
||||
echo "install: Logging to \"$log_target\""
|
||||
install 2>&1 | tee "$log_target"
|
||||
|
||||
unset uuid dir install_dir log_dir log_target
|
||||
# Clean up
|
||||
unset uuid dir install_dir log_dir log_abs_target log_target
|
||||
echo "Thank you!"
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
build-essential
|
||||
libssl-dev
|
||||
libbz2-dev
|
||||
libreadline-dev
|
||||
libsqlite3-dev
|
||||
libxml2-dev
|
||||
libxmlsec1-dev
|
||||
llvm
|
||||
libncurses5-dev
|
||||
libncursesw5-dev
|
||||
xz-utils
|
||||
tk-dev
|
||||
libffi-dev
|
||||
liblzma-dev
|
||||
zlib1g-dev
|
||||
@@ -5,18 +5,35 @@
|
||||
# Configure pyenv.
|
||||
#
|
||||
|
||||
if ! bin_in_path "pyenv"; then
|
||||
if ! command -v "pyenv" &> /dev/null; then
|
||||
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
||||
# see https://github.com/pyenv/pyenv/wiki/common-build-problems
|
||||
pyenv_list_file="$INSTALL_DIR/10-pyenv-pkglist"
|
||||
install_file "$pyenv_list_file"
|
||||
ppyenv_packages=(
|
||||
build-essential
|
||||
libssl-dev
|
||||
libbz2-dev
|
||||
libreadline-dev
|
||||
libsqlite3-dev
|
||||
libxml2-dev
|
||||
libxmlsec1-dev
|
||||
llvm
|
||||
libncurses5-dev
|
||||
libncursesw5-dev
|
||||
xz-utils
|
||||
tk-dev
|
||||
libffi-dev
|
||||
liblzma-dev
|
||||
zlib1g-dev
|
||||
)
|
||||
pyenv_packages=($(comm -13 <(printf "%s\n" "${pyenv_packages[@]}" | sort) <(dpkg --get-selections | awk '{print $1}' | sort)))
|
||||
if [ ${#pyenv_packages[@]} -gt 0 ]; then
|
||||
sudo apt-get install -qq "${pyenv_packages[@]}"
|
||||
fi
|
||||
|
||||
# see https://github.com/pyenv/pyenv-installer
|
||||
download_run \
|
||||
"https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer" \
|
||||
bash
|
||||
e
|
||||
unset pyenv_list_file
|
||||
bash -c "$(curl -fsSL https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer)"
|
||||
|
||||
unset pyenv_packages
|
||||
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
brew install pyenv
|
||||
brew install pyenv-virtualenv
|
||||
@@ -30,10 +47,9 @@ if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
||||
https://github.com/pyenv/pyenv-virtualenv.git \
|
||||
$virtualenv_path
|
||||
fi
|
||||
unset virtualenv_path
|
||||
fi
|
||||
|
||||
eval "$(pyenv init --path)"
|
||||
|
||||
pyenv update
|
||||
|
||||
pyenv --version
|
||||
|
||||
@@ -7,16 +7,49 @@
|
||||
|
||||
export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
|
||||
|
||||
if ! bin_in_path "pip3"; then
|
||||
pyenv install 3.9.0
|
||||
pyenv global 3.9.0
|
||||
if ! command -v "pip3" &>/dev/null; then
|
||||
pyenv install 3.12.1
|
||||
pyenv global 3.12.1
|
||||
fi
|
||||
|
||||
pip install --upgrade pip
|
||||
pip3 install --upgrade pip
|
||||
pip install --quiet --upgrade --user pip
|
||||
pip3 install --quiet --upgrade --user pip
|
||||
python3 --version
|
||||
pip3 --version
|
||||
|
||||
for dep in $(jq -r ".pip_dependencies[]" $CONFIG); do
|
||||
pip3 install --upgrade $dep
|
||||
done
|
||||
pip_dependencies=(
|
||||
# docker-compose
|
||||
# neovim
|
||||
# "python-language-server[all]"
|
||||
# pyvim
|
||||
)
|
||||
installed_packages=$(pip3 list --format=freeze | awk -F'==' '{print $1}')
|
||||
pip_dependencies=($(comm -13 <(printf "%s\n" "${installed_packages[@]}" | sort) <(printf "%s\n" "${pip_dependencies[@]}" | sort)))
|
||||
|
||||
if [ ${#pip_dependencies[@]} -gt 0 ]; then
|
||||
pip3 install --quiet --upgrade --user "${pip_dependencies[@]}"
|
||||
fi
|
||||
|
||||
unset installed_packages pip_dependencies PYTHON_KEYRING_BACKEND
|
||||
|
||||
if ! command -v "pipx" &>/dev/null; then
|
||||
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
||||
sudo apt-get install -qq pipx
|
||||
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
brew install pipx
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "pipx $(pipx --version)"
|
||||
|
||||
if ! command -v "poetry" &>/dev/null; then
|
||||
pipx install poetry
|
||||
fi
|
||||
|
||||
poetry --version
|
||||
|
||||
POETRY_PLUGIN="$ZSH/custom/plugins/poetry"
|
||||
if [ ! -d "$POETRY_PLUGIN" ]; then
|
||||
mkdir -p $POETRY_PLUGIN
|
||||
poetry completions zsh > $POETRY_PLUGIN/_poetry
|
||||
fi
|
||||
|
||||
@@ -5,29 +5,35 @@
|
||||
# Configure Node.js.
|
||||
#
|
||||
|
||||
nvm_version="0.39.7"
|
||||
if ! bin_in_path "nvm"; then
|
||||
download_run "https://raw.githubusercontent.com/nvm-sh/nvm/v${nvm_version}/install.sh" \
|
||||
"bash"
|
||||
fi
|
||||
|
||||
NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh"
|
||||
|
||||
nvm_version="0.39.7"
|
||||
if ! command -v "nvm" &>/dev/null; then
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v${nvm_version}/install.sh)"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh"
|
||||
fi
|
||||
|
||||
nvm --version
|
||||
nvm alias default lts/iron
|
||||
nvm install lts/iron
|
||||
nvm use lts/iron
|
||||
|
||||
node --version
|
||||
echo "Node.js $(node --version)"
|
||||
|
||||
yarn --version
|
||||
echo "npm $(npm --version)"
|
||||
|
||||
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
||||
for dep in $(jq -r ".node_dependencies[]" $CONFIG); do
|
||||
yarn global add $dep
|
||||
yarn global upgrade $dep
|
||||
done
|
||||
npm_dependencies=(
|
||||
"firebase-tools"
|
||||
"neovim"
|
||||
"typescript-language-server"
|
||||
"typescript"
|
||||
)
|
||||
|
||||
npm_dependencies=($(comm -13 <(printf "%s\n" "${npm_dependencies[@]}" | sort) <(npm list -g --depth=0 --parseable | awk -F'/' '{print $NF}' | sort)))
|
||||
|
||||
if [ ${#npm_dependencies[@]} -gt 0 ]; then
|
||||
npm install -g "${npm_dependencies[@]}"
|
||||
fi
|
||||
|
||||
unset nvm_version
|
||||
unset nvm_version npm_dependencies
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# /bin/bash
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Description:
|
||||
|
||||
15
script/install.d/25-terraform.sh
Normal file
15
script/install.d/25-terraform.sh
Normal file
@@ -0,0 +1,15 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Description:
|
||||
# Install terraform.
|
||||
#
|
||||
|
||||
if ! command -v "terraform" &>/dev/null; then
|
||||
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
||||
sudo apt-get install -qq terraform
|
||||
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
brew tap hashicorp/tap
|
||||
brew install hashicorp/tap/terraform
|
||||
fi
|
||||
fi
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
|
||||
if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
if ! command -v iterm2 &> /dev/null; then
|
||||
if ! brew list --cask iterm2 &>/dev/null; then
|
||||
brew install --cask iterm2
|
||||
fi
|
||||
fi
|
||||
|
||||
14
script/install.d/80-neofetch.sh
Normal file
14
script/install.d/80-neofetch.sh
Normal file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Description:
|
||||
# Install neofetch.
|
||||
#
|
||||
|
||||
if ! command -v "neofetch" &>/dev/null; then
|
||||
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
||||
sudo apt-get install -qq neofetch
|
||||
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
brew install neofetch
|
||||
fi
|
||||
fi
|
||||
@@ -5,4 +5,4 @@
|
||||
# Print system information.
|
||||
#
|
||||
|
||||
screenfetch
|
||||
neofetch
|
||||
|
||||
@@ -69,19 +69,5 @@
|
||||
"tmux",
|
||||
"unzip",
|
||||
"yarn"
|
||||
],
|
||||
"node_dependencies": [
|
||||
"firebase-tools",
|
||||
"neovim",
|
||||
"typescript-language-server",
|
||||
"typescript"
|
||||
],
|
||||
"pip_dependencies": [
|
||||
"awscli",
|
||||
"docker-compose",
|
||||
"neovim",
|
||||
"poetry",
|
||||
"python-language-server[all]",
|
||||
"pyvim"
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user