|
#!/bin/bash |
|
|
|
# Get Ruby and Node versions from user input or use defaults |
|
read -p "Enter Ruby version (default: 3.2.0): " ruby_version |
|
ruby_version=${ruby_version:-3.2.0} |
|
|
|
read -p "Enter Node.js version (default: 18): " node_version |
|
node_version=${node_version:-18} |
|
|
|
echo -e "\033[1;34m๐น Using Ruby: $ruby_version, Node.js: $node_version\033[0m" |
|
|
|
# Check Homebrew |
|
if ! command -v brew &>/dev/null; then |
|
echo -e "\033[1;33m๐น Installing Homebrew...\033[0m" |
|
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" |
|
else |
|
echo -e "\033[1;32mโ
Homebrew is already installed.\033[0m" |
|
fi |
|
|
|
# Ensure Homebrew environment is set up |
|
eval "$(/opt/homebrew/bin/brew shellenv)" |
|
|
|
# Install RVM manually if not available |
|
if ! command -v rvm &>/dev/null; then |
|
echo -e "\033[1;33m๐น Installing RVM...\033[0m" |
|
curl -sSL https://get.rvm.io | bash -s stable |
|
source "$HOME/.rvm/scripts/rvm" |
|
else |
|
echo -e "\033[1;32mโ
RVM is already installed.\033[0m" |
|
fi |
|
|
|
# Ensure RVM is sourced in ~/.zshrc |
|
if ! grep -q 'source "$HOME/.rvm/scripts/rvm"' ~/.zshrc; then |
|
echo 'export PATH="$PATH:$HOME/.rvm/bin"' >> ~/.zshrc |
|
echo 'source "$HOME/.rvm/scripts/rvm"' >> ~/.zshrc |
|
fi |
|
source "$HOME/.rvm/scripts/rvm" |
|
|
|
# Install Ruby if not available |
|
if ! rvm list strings | grep -q "$ruby_version"; then |
|
echo -e "\033[1;33m๐น Installing Ruby $ruby_version...\033[0m" |
|
rvm install "$ruby_version" |
|
fi |
|
rvm use "$ruby_version" --default |
|
|
|
# Install NVM via Homebrew |
|
if ! brew list nvm &>/dev/null; then |
|
echo -e "\033[1;33m๐น Installing NVM via Homebrew...\033[0m" |
|
brew install nvm |
|
else |
|
echo -e "\033[1;32mโ
NVM is already installed via Homebrew.\033[0m" |
|
fi |
|
|
|
# Ensure NVM is sourced in ~/.zshrc |
|
if ! grep -q 'export NVM_DIR="$HOME/.nvm"' ~/.zshrc; then |
|
echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.zshrc |
|
echo '[ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && . "/opt/homebrew/opt/nvm/nvm.sh"' >> ~/.zshrc |
|
echo '[ -s "/opt/homebrew/opt/nvm/etc/bash_completion" ] && . "/opt/homebrew/opt/nvm/etc/bash_completion"' >> ~/.zshrc |
|
fi |
|
|
|
# Load NVM |
|
export NVM_DIR="$HOME/.nvm" |
|
source "/opt/homebrew/opt/nvm/nvm.sh" |
|
|
|
# Install Node.js if not available |
|
if ! nvm list | grep -q "v$node_version"; then |
|
echo -e "\033[1;33m๐น Installing Node.js $node_version...\033[0m" |
|
nvm install "$node_version" |
|
fi |
|
nvm use "$node_version" |
|
nvm alias default "$node_version" |
|
|
|
# Install Bundler if not available |
|
if ! gem list -i bundler &>/dev/null; then |
|
echo -e "\033[1;33m๐น Installing Bundler...\033[0m" |
|
gem install bundler |
|
else |
|
echo -e "\033[1;32mโ
Bundler is already installed.\033[0m" |
|
fi |
|
|
|
# Install Cocoapods if not available |
|
if ! gem list -i cocoapods &>/dev/null; then |
|
echo -e "\033[1;33m๐น Installing Cocoapods...\033[0m" |
|
gem install cocoapods |
|
else |
|
echo -e "\033[1;32mโ
Cocoapods is already installed.\033[0m" |
|
fi |
|
|
|
# Install Yarn if not available |
|
if ! command -v yarn &>/dev/null; then |
|
echo -e "\033[1;33m๐น Installing Yarn...\033[0m" |
|
npm install -g yarn |
|
else |
|
echo -e "\033[1;32mโ
Yarn is already installed.\033[0m" |
|
fi |
|
|
|
|
|
# Install Zulu JDK if not available |
|
if ! brew list --formula | grep -q "zulu"; then |
|
echo -e "\033[1;33m๐น Installing Zulu JDK...\033[0m" |
|
brew install --cask zulu@17 |
|
else |
|
echo -e "\033[1;32mโ
Zulu JDK is already installed.\033[0m" |
|
fi |
|
|
|
# Ensure Zulu JDK is sourced in ~/.zshrc |
|
if ! grep -q 'export JAVA_HOME="$(/usr/libexec/java_home -v 17)"' ~/.zshrc; then |
|
echo 'export JAVA_HOME="$(/usr/libexec/java_home -v 17)"' >> ~/.zshrc |
|
echo 'export ANDROID_HOME="$HOME/Library/Android/sdk"' >> ~/.zshrc |
|
echo 'export PATH="$JAVA_HOME/bin:$PATH"' >> ~/.zshrc |
|
echo 'export PATH="$ANDROID_HOME/emulator:$ANDROID_HOME/platform-tools:$ANDROID_HOME/cmdline-tools/latest/bin:$PATH"' >> ~/.zshrc |
|
fi |
|
|
|
# Check for Xcode Command Line Tools |
|
if ! xcode-select -p &>/dev/null; then |
|
echo -e "\033[1;33m๐น Installing Xcode Command Line Tools...\033[0m" |
|
xcode-select --install |
|
else |
|
echo -e "\033[1;32mโ
Xcode Command Line Tools are already setup.\033[0m" |
|
fi |
|
|
|
# Check if Xcode Command Line Tools is already installed |
|
if xcode-select -p &>/dev/null; then |
|
echo "โ
Xcode Command Line Tools is already set up." |
|
osascript -e 'display notification "Xcode Command Line Tools is already installed!" with title "Setup Complete"' |
|
else |
|
echo "๐น Xcode Command Line Tools is not set up." |
|
|
|
# Show a dialog to request permission |
|
osascript -e 'display dialog "Xcode Command Line Tools needs permission to be set up. Click OK to continue." buttons {"OK"} default button "OK" with icon caution' |
|
|
|
# Install Xcode Command Line Tools |
|
xcode-select --install |
|
|
|
# Wait for user confirmation |
|
osascript -e 'display notification "Please complete the installation and click OK when done." with title "Installation in Progress"' |
|
|
|
# Verify if installation was successful |
|
if xcode-select -p &>/dev/null; then |
|
osascript -e 'display notification "Xcode Command Line Tools has been successfully installed!" with title "Setup Complete"' |
|
echo "\033[1;32mโ
Xcode Command Line Tools has been setup.\033[0m" |
|
else |
|
osascript -e 'display alert "Error!" message "Failed to set up Xcode Command Line Tools. Please try again manually."' |
|
echo "โ Error: Could not set up Xcode Command Line Tools." |
|
fi |
|
fi |
|
|
|
# Display installed versions |
|
echo -e "\n\033[1;36m๐ Installation Complete!\033[0m" |
|
echo -e "\033[1;35m--------------------------------\033[0m" |
|
echo -e "๐บ \033[1;34mHomebrew:\033[0m $(brew --version | head -n 1)" |
|
echo -e "๐ \033[1;34mRuby:\033[0m $(ruby -v)" |
|
echo -e "๐ฆ \033[1;34mRVM:\033[0m $(rvm -v | head -n 1)" |
|
echo -e "๐ \033[1;34mNVM:\033[0m $(nvm --version)" |
|
echo -e "๐ \033[1;34mNode.js:\033[0m $(node -v)" |
|
echo -e "๐ \033[1;34mBundler:\033[0m $(bundler -v)" |
|
echo -e "๐ฆ \033[1;34mCocoapods:\033[0m $(pod --version)" |
|
echo -e "๐งถ \033[1;34mYarn:\033[0m $(yarn -v)" |
|
echo -e "๐งถ \033[1;34mJava:\033[0m $(java -version)" |
|
echo -e "๐ฅ \033[1;34mXcode:\033[0m $(xcodebuild -version | head -n 1)" |
|
echo -e "\033[1;35m--------------------------------\033[0m" |