#!/usr/bin/env bash set -eo pipefail # Prefer app executables app_root="$( cd "$(dirname "$0")/.." pwd )" export PATH="$app_root/bin:$PATH" REDIS_PORT=6379 REDIS_HOST=localhost if [ "$RAILS_ENV" = "production" ]; then echo "RAILS_ENV is production; bailing out" exit 1 fi # Install gum if needed if ! command -v gum &>/dev/null; then echo echo "▸ Installing gum" if command -v pacman &>/dev/null; then sudo pacman -S --noconfirm gum elif command -v brew &>/dev/null; then brew install gum else echo "Please install gum: https://github.com/charmbracelet/gum" exit 1 fi echo fi step() { local step_name="$1" shift gum style --foreground 208 --bold "▸ $step_name" gum style --foreground 240 "$*" "$@" local exit_code=$? echo return $exit_code } redis_running() { nc -z "$REDIS_HOST" "$REDIS_PORT" 2>/dev/null } echo gum style --foreground 214 " ) " gum style --foreground 208 " ) \\ campfire" gum style --foreground 202 " ( ( (" gum style --foreground 94 " .^^^." echo # Install dependencies if command -v brew &>/dev/null; then step "Installing packages" brew install sqlite ffmpeg mise elif command -v pacman &>/dev/null; then step "Installing packages" sudo pacman -S --noconfirm --needed sqlite ffmpeg mise elif command -v apt &>/dev/null; then step "Installing packages" sudo apt-get install --no-install-recommends -y libsqlite3-0 ffmpeg fi if ! command -v mise &>/dev/null; then echo "Couldn't install mise" echo "Install mise using your package manager or via:" echo "https://mise.jdx.dev/installing-mise.html" exit 1 fi step "Installing Ruby" mise install --yes eval "$(mise hook-env)" bundle config set --local auto_install true step "Installing RubyGems" bundle install # Prepare database if [[ $* == *--reset* ]]; then rm -rf ./storage/{db,files} step "Resetting the database" rails db:reset fi step "Preparing the database" rails db:prepare # Start Redis if not running if ! redis_running; then if command -v docker &>/dev/null; then if docker ps -aq -f name=campfire-redis | grep -q .; then step "Starting Redis" docker start campfire-redis else step "Setting up Redis" docker run -d --name campfire-redis -p "$REDIS_PORT:$REDIS_PORT" redis:7 fi else echo "Couldn't start Redis" echo "Install either docker or redis and then run this command again" exit 1 fi fi step "Cleaning up logs and tempfiles" rails log:clear tmp:clear step "Restarting services" rails restart gum style --foreground 46 "✓ Done (${SECONDS} sec)"