183 lines
3.9 KiB
Bash
Executable File
183 lines
3.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
install_curl() {
|
|
if command -v curl >/dev/null 2>&1; then
|
|
echo "Curl is already installed."
|
|
return 0
|
|
fi
|
|
echo "Installing curl..."
|
|
if [ $OS == "mac" ]; then
|
|
brew install curl
|
|
else
|
|
if [ -x "$(command -v yum)" ]; then
|
|
sudo yum install -y curl
|
|
elif [ -x "$(command -v apt-get)" ]; then
|
|
sudo apt-get install -y curl
|
|
else
|
|
echo "Package manager not supported. Cannot install curl."
|
|
fi
|
|
fi
|
|
}
|
|
|
|
install_node() {
|
|
if [ -f "$HOME/.nvm/nvm.sh" ]; then
|
|
NVM_EXISTS=true
|
|
else
|
|
NVM_EXISTS=false
|
|
fi
|
|
if $NVM_EXISTS; then
|
|
echo "NVM is already installed."
|
|
else
|
|
echo "Installing NVM..."
|
|
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
|
|
export NVM_DIR="$HOME/.nvm"
|
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
|
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
|
fi
|
|
echo "Setting correct node, npm, and pnpm versions..."
|
|
bash -i -c 'source ~/.bashrc; nvm install 20; nvm use 20; nvm alias default 20; nvm install-latest-npm; npm install -g pnpm@9; exit;'
|
|
}
|
|
|
|
install_aws_cli() {
|
|
if command -v aws >/dev/null 2>&1; then
|
|
echo "AWS CLI is already installed."
|
|
return 0
|
|
fi
|
|
|
|
echo "Installing AWS CLI v2..."
|
|
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
|
|
unzip awscliv2.zip
|
|
sudo ./aws/install
|
|
rm -rf awscliv2.zip aws
|
|
}
|
|
|
|
install_homebrew() {
|
|
if [ "$OS" != "mac" ]; then
|
|
return 0
|
|
fi
|
|
|
|
if command -v brew >/dev/null 2>&1; then
|
|
echo "Homebrew is already installed."
|
|
return 0
|
|
fi
|
|
echo "Installing Homebrew..."
|
|
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
}
|
|
|
|
install_jq() {
|
|
if command -v jq >/dev/null 2>&1; then
|
|
echo "jq is already installed."
|
|
return 0
|
|
fi
|
|
case $1 in
|
|
mac)
|
|
brew install jq
|
|
;;
|
|
linux)
|
|
if [ -x "$(command -v yum)" ]; then
|
|
sudo yum install -y jq
|
|
elif [ -x "$(command -v apt-get)" ]; then
|
|
sudo apt-get install -y jq
|
|
else
|
|
echo "Package manager not supported. Cannot install jq."
|
|
fi
|
|
;;
|
|
esac
|
|
}
|
|
|
|
install_java() {
|
|
if command -v java >/dev/null 2>&1; then
|
|
echo "Java is already installed."
|
|
return 0
|
|
fi
|
|
case $1 in
|
|
mac)
|
|
brew install java
|
|
;;
|
|
linux)
|
|
if [ -x "$(command -v yum)" ]; then
|
|
sudo yum install -y java
|
|
elif [ -x "$(command -v apt-get)" ]; then
|
|
sudo apt-get install -y openjdk-8-jdk
|
|
else
|
|
echo "Package manager not supported. Cannot install Java."
|
|
fi
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# Detect OS and install packages
|
|
OS="unknown"
|
|
if [ "$(uname)" == "Darwin" ]; then
|
|
OS="mac"
|
|
elif [ -f "/etc/redhat-release" ]; then
|
|
OS="linux"
|
|
elif [ -f "/etc/debian_version" ]; then
|
|
OS="linux"
|
|
fi
|
|
|
|
usage() {
|
|
echo "Usage: $0 [-f function]"
|
|
echo "Available functions:"
|
|
echo " all Install all dependencies"
|
|
echo " brew Install Homebrew"
|
|
echo " curl Install curl"
|
|
echo " node Install Node.js and NVM"
|
|
echo " aws Install AWS CLI"
|
|
echo " jq Install jq"
|
|
echo " java Install Java"
|
|
exit 1
|
|
}
|
|
|
|
while getopts "f:" opt; do
|
|
case ${opt} in
|
|
f)
|
|
FUNCTION=$OPTARG
|
|
;;
|
|
*)
|
|
usage
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ -z "$FUNCTION" ]; then
|
|
# Default to running all
|
|
FUNCTION="all"
|
|
fi
|
|
|
|
case $FUNCTION in
|
|
brew)
|
|
install_homebrew
|
|
;;
|
|
curl)
|
|
install_curl
|
|
;;
|
|
node)
|
|
install_node
|
|
;;
|
|
node-version)
|
|
get_node_version
|
|
;;
|
|
aws)
|
|
install_aws_cli
|
|
;;
|
|
jq)
|
|
install_jq $OS
|
|
;;
|
|
java)
|
|
install_java $OS
|
|
;;
|
|
all)
|
|
install_homebrew
|
|
install_curl
|
|
install_node
|
|
install_aws_cli
|
|
install_jq $OS
|
|
install_java $OS
|
|
echo "Installation complete. Please verify the installation by checking the versions of the installed software."
|
|
echo "Open a new terminal session to start using everything."
|
|
;;
|
|
*)
|
|
usage
|
|
;;
|
|
esac |