mirror of
https://github.com/CompassConnections/Compass.git
synced 2025-12-24 06:27:52 -05:00
116 lines
3.5 KiB
Bash
Executable File
116 lines
3.5 KiB
Bash
Executable File
# Description: Automated setup script for OpenTofu, Docker, and Yarn on Linux and macOS
|
|
# If it fails, please help us improve it by creating an issue or a PR. Otherwise, you can install them manually.
|
|
|
|
#!/usr/bin/env bash
|
|
set -e
|
|
|
|
DIR=$(dirname "$0")
|
|
cd "$DIR" || exit 1
|
|
|
|
# ----------------------------
|
|
# Helper functions
|
|
# ----------------------------
|
|
command_exists() {
|
|
command -v "$1" >/dev/null 2>&1
|
|
}
|
|
|
|
info() {
|
|
echo -e "\033[1;34m[INFO]\033[0m $1"
|
|
}
|
|
|
|
error() {
|
|
echo -e "\033[1;31m[ERROR]\033[0m $1"
|
|
}
|
|
|
|
# ----------------------------
|
|
# Detect OS
|
|
# ----------------------------
|
|
OS="$(uname -s)"
|
|
info "Detected OS: $OS"
|
|
|
|
# ----------------------------
|
|
# Install OpenTofu
|
|
# ----------------------------
|
|
install_opentofu_linux() {
|
|
info "Installing OpenTofu for Linux..."
|
|
# LATEST=$(curl -s https://api.github.com/repos/opentofu/opentofu/releases/latest | grep browser_download_url | grep linux_amd64.zip | cut -d '"' -f 4)
|
|
LATEST=https://github.com/opentofu/opentofu/releases/download/v1.10.5/tofu_1.10.5_linux_amd64.zip
|
|
cd /tmp || exit 1
|
|
curl -LO "$LATEST"
|
|
unzip -o tofu_*_linux_amd64.zip
|
|
sudo mv tofu /usr/local/bin/
|
|
rm tofu_*_linux_amd64.zip
|
|
info "OpenTofu version: $(tofu version)"
|
|
cd $DIR || exit 1
|
|
}
|
|
|
|
install_opentofu_mac() {
|
|
info "Installing OpenTofu via Homebrew..."
|
|
if ! command_exists brew; then
|
|
error "Homebrew not found. Install it first: https://brew.sh/"
|
|
exit 1
|
|
fi
|
|
brew tap opentofu/opentofu
|
|
brew install opentofu
|
|
info "OpenTofu version: $(opentofu version)"
|
|
}
|
|
|
|
# ----------------------------
|
|
# Install Docker
|
|
# ----------------------------
|
|
install_docker_linux() {
|
|
info "Installing Docker for Linux..."
|
|
sudo apt update
|
|
sudo apt install -y ca-certificates curl gnupg lsb-release unzip
|
|
sudo mkdir -p /etc/apt/keyrings
|
|
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
|
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
|
sudo apt update
|
|
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
|
sudo systemctl enable docker
|
|
info "Docker version: $(docker --version)"
|
|
}
|
|
|
|
install_docker_mac() {
|
|
info "Please install Docker Desktop from https://www.docker.com/products/docker-desktop/"
|
|
}
|
|
|
|
# ----------------------------
|
|
# Install Yarn
|
|
# ----------------------------
|
|
install_yarn_linux() {
|
|
info "Installing Node.js LTS..."
|
|
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
|
|
sudo apt install -y nodejs
|
|
info "Installing Yarn..."
|
|
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
|
|
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
|
|
sudo apt update
|
|
sudo apt install -y yarn
|
|
info "Yarn version: $(yarn --version)"
|
|
}
|
|
|
|
install_yarn_mac() {
|
|
info "Installing Yarn via Homebrew..."
|
|
brew install yarn
|
|
info "Yarn version: $(yarn --version)"
|
|
}
|
|
|
|
# ----------------------------
|
|
# Main installation flow
|
|
# ----------------------------
|
|
if [[ "$OS" == "Linux" ]]; then
|
|
install_opentofu_linux
|
|
install_docker_linux
|
|
install_yarn_linux
|
|
elif [[ "$OS" == "Darwin" ]]; then
|
|
install_opentofu_mac
|
|
install_docker_mac
|
|
install_yarn_mac
|
|
else
|
|
error "Unsupported OS: $OS"
|
|
exit 1
|
|
fi
|
|
|
|
info "Installation completed successfully!"
|