#!/usr/bin/env bash set -euo pipefail # One-click setup for ritmex-bot (Linux/macOS) # - Ensures Bun is installed # - Installs dependencies # - Prompts for API credentials # - Generates .env # - Starts the bot main() { require_unix ensure_repo cd "$PROJECT_DIR" ensure_bun install_deps prompt_env write_env echo echo "✅ Setup complete. Starting ritmex-bot..." echo start_bot } require_unix() { case "$(uname -s)" in Linux|Darwin) ;; *) echo "This script supports only Linux and macOS." >&2; exit 1 ;; esac } ensure_bun() { if command -v bun >/dev/null 2>&1; then echo "✔ Bun found: $(bun --version)" return fi echo "ℹ Bun not found. Installing Bun..." if [ "$(uname -s)" = "Darwin" ] && command -v brew >/dev/null 2>&1; then brew install bun else # Non-interactive install via official script curl -fsSL https://bun.sh/install | bash # shellcheck disable=SC1090 if [ -f "$HOME/.bun/bun" ] || [ -d "$HOME/.bun" ]; then export BUN_INSTALL="$HOME/.bun" export PATH="$BUN_INSTALL/bin:$PATH" fi fi if ! command -v bun >/dev/null 2>&1; then echo "❌ Failed to install Bun. Please install it manually from https://bun.sh" >&2 exit 1 fi echo "✔ Bun installed: $(bun --version)" } ensure_repo() { # Detect if running inside project root already if [ -f "package.json" ] && grep -q '"name"\s*:\s*"ritmex-bot"' package.json 2>/dev/null; then PROJECT_DIR="$PWD" echo "✔ Project detected in current directory: $PROJECT_DIR" return fi local REPO_URL="https://github.com/discountry/ritmex-bot.git" local TAR_URL="https://github.com/discountry/ritmex-bot/archive/refs/heads/main.tar.gz" local TARGET_DIR="${RITMEX_DIR:-ritmex-bot}" if [ -d "$TARGET_DIR" ] && [ -f "$TARGET_DIR/package.json" ]; then PROJECT_DIR="$TARGET_DIR" echo "✔ Project directory found: $PROJECT_DIR" return fi echo "Fetching ritmex-bot sources..." if command -v git >/dev/null 2>&1; then git clone --depth=1 "$REPO_URL" "$TARGET_DIR" else echo "ℹ git not found; downloading tarball..." curl -fsSL "$TAR_URL" -o /tmp/ritmex-bot.tar.gz mkdir -p "$TARGET_DIR" tar -xzf /tmp/ritmex-bot.tar.gz --strip-components=1 -C "$TARGET_DIR" rm -f /tmp/ritmex-bot.tar.gz fi PROJECT_DIR="$TARGET_DIR" } install_deps() { echo "Installing dependencies with Bun..." bun install } prompt_env() { echo echo "Please enter your AsterDex API credentials." read -r -p "ASTER_API_KEY: " ASTER_API_KEY read -r -s -p "ASTER_API_SECRET (input hidden): " ASTER_API_SECRET echo read -r -p "TRADE_SYMBOL (default BTCUSDT): " TRADE_SYMBOL || true TRADE_SYMBOL=${TRADE_SYMBOL:-BTCUSDT} # Optional trading parameters read -r -p "TRADE_AMOUNT (default 0.001): " TRADE_AMOUNT || true TRADE_AMOUNT=${TRADE_AMOUNT:-0.001} read -r -p "LOSS_LIMIT (default 0.03): " LOSS_LIMIT || true LOSS_LIMIT=${LOSS_LIMIT:-0.03} read -r -p "KLINE_INTERVAL (default 1m): " KLINE_INTERVAL || true KLINE_INTERVAL=${KLINE_INTERVAL:-1m} } write_env() { local env_file=".env" echo "Writing ${env_file}..." cat > "${env_file}" <