#!/bin/bash # Test and start script for Transmission RSS Manager # This script checks the installation, dependencies, and starts the application # Text formatting BOLD='\033[1m' GREEN='\033[0;32m' YELLOW='\033[0;33m' RED='\033[0;31m' NC='\033[0m' # No Color # Get directory of this script SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" APP_DIR="$(dirname "$SCRIPT_DIR")" # Function to check if a command exists command_exists() { command -v "$1" &> /dev/null } # Check Node.js and npm check_node() { echo -e "${BOLD}Checking Node.js and npm...${NC}" if command_exists node; then NODE_VERSION=$(node -v) echo -e "${GREEN}Node.js is installed: $NODE_VERSION${NC}" else echo -e "${RED}Node.js is not installed. Please install Node.js 14 or later.${NC}" exit 1 fi if command_exists npm; then NPM_VERSION=$(npm -v) echo -e "${GREEN}npm is installed: $NPM_VERSION${NC}" else echo -e "${RED}npm is not installed. Please install npm.${NC}" exit 1 fi } # Check if Transmission is running check_transmission() { echo -e "${BOLD}Checking Transmission...${NC}" # Try to get the status of the transmission-daemon service if command_exists systemctl; then if systemctl is-active --quiet transmission-daemon; then echo -e "${GREEN}Transmission daemon is running${NC}" else echo -e "${YELLOW}Warning: Transmission daemon does not appear to be running${NC}" echo -e "${YELLOW}You may need to start it with: sudo systemctl start transmission-daemon${NC}" fi else # Try a different method if systemctl is not available if pgrep -x "transmission-daemon" > /dev/null; then echo -e "${GREEN}Transmission daemon is running${NC}" else echo -e "${YELLOW}Warning: Transmission daemon does not appear to be running${NC}" echo -e "${YELLOW}Please start Transmission daemon before using this application${NC}" fi fi } # Check dependencies in package.json check_dependencies() { echo -e "${BOLD}Checking dependencies...${NC}" # Check if node_modules exists if [ ! -d "$APP_DIR/node_modules" ]; then echo -e "${YELLOW}Node modules not found. Installing dependencies...${NC}" cd "$APP_DIR" && npm install if [ $? -ne 0 ]; then echo -e "${RED}Failed to install dependencies.${NC}" exit 1 else echo -e "${GREEN}Dependencies installed successfully${NC}" fi else echo -e "${GREEN}Dependencies are already installed${NC}" fi } # Check if config.json exists check_config() { echo -e "${BOLD}Checking configuration...${NC}" if [ ! -f "$APP_DIR/config.json" ]; then echo -e "${RED}Configuration file not found: $APP_DIR/config.json${NC}" echo -e "${YELLOW}Please run the installer or create a config.json file${NC}" exit 1 else echo -e "${GREEN}Configuration file found${NC}" fi } # Start the application start_app() { echo -e "${BOLD}Starting Transmission RSS Manager...${NC}" # Check if running as a service if command_exists systemctl; then if systemctl is-active --quiet transmission-rss-manager; then echo -e "${YELLOW}Transmission RSS Manager is already running as a service${NC}" echo -e "${YELLOW}To restart it, use: sudo systemctl restart transmission-rss-manager${NC}" exit 0 fi fi # Start the application cd "$APP_DIR" # Parse arguments FOREGROUND=false DEBUG=false while [[ "$#" -gt 0 ]]; do case $1 in --foreground|-f) FOREGROUND=true ;; --debug|-d) DEBUG=true ;; *) echo "Unknown parameter: $1"; exit 1 ;; esac shift done if [ "$FOREGROUND" = true ]; then echo -e "${GREEN}Starting in foreground mode...${NC}" if [ "$DEBUG" = true ]; then echo -e "${YELLOW}Debug mode enabled${NC}" DEBUG_ENABLED=true node server.js else node server.js fi else echo -e "${GREEN}Starting in background mode...${NC}" if [ "$DEBUG" = true ]; then echo -e "${YELLOW}Debug mode enabled${NC}" DEBUG_ENABLED=true nohup node server.js > logs/output.log 2>&1 & else nohup node server.js > logs/output.log 2>&1 & fi echo $! > "$APP_DIR/transmission-rss-manager.pid" echo -e "${GREEN}Application started with PID: $!${NC}" echo -e "${GREEN}Logs available at: $APP_DIR/logs/output.log${NC}" fi } # Main script echo -e "${BOLD}==================================================${NC}" echo -e "${BOLD} Transmission RSS Manager - Test & Start ${NC}" echo -e "${BOLD}==================================================${NC}" echo # Run checks check_node check_transmission check_dependencies check_config # Start the application start_app "$@"