#!/bin/bash # Dependencies module for Transmission RSS Manager Installation function install_dependencies() { log "INFO" "Installing dependencies..." # Check for package manager if command -v apt-get &> /dev/null; then # Update package index apt-get update # Install Node.js and npm if not already installed if ! command_exists node; then log "INFO" "Installing Node.js and npm..." apt-get install -y ca-certificates curl gnupg mkdir -p /etc/apt/keyrings # Check if download succeeds if ! curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg; then log "ERROR" "Failed to download Node.js GPG key" exit 1 fi echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" > /etc/apt/sources.list.d/nodesource.list # Update again after adding repo apt-get update # Install nodejs if ! apt-get install -y nodejs; then log "ERROR" "Failed to install Node.js" exit 1 fi else log "INFO" "Node.js is already installed." fi # Install additional dependencies log "INFO" "Installing additional dependencies..." apt-get install -y unrar unzip p7zip-full nginx else log "ERROR" "This installer requires apt-get package manager" log "INFO" "Please install the following dependencies manually:" log "INFO" "- Node.js (v18.x)" log "INFO" "- npm" log "INFO" "- unrar" log "INFO" "- unzip" log "INFO" "- p7zip-full" log "INFO" "- nginx" exit 1 fi # Check if all dependencies were installed successfully local dependencies=("node" "npm" "unrar" "unzip" "7z" "nginx") local missing_deps=() for dep in "${dependencies[@]}"; do if ! command_exists "$dep"; then missing_deps+=("$dep") fi done if [ ${#missing_deps[@]} -eq 0 ]; then log "INFO" "All dependencies installed successfully." else log "ERROR" "Failed to install some dependencies: ${missing_deps[*]}" log "WARN" "Please install them manually and rerun this script." # More helpful information based on which deps are missing if [[ " ${missing_deps[*]} " =~ " node " ]]; then log "INFO" "To install Node.js manually, visit: https://nodejs.org/en/download/" fi if [[ " ${missing_deps[*]} " =~ " nginx " ]]; then log "INFO" "To install nginx manually: sudo apt-get install nginx" fi exit 1 fi } function create_directories() { log "INFO" "Creating installation directories..." # Check if INSTALL_DIR is defined if [ -z "$INSTALL_DIR" ]; then log "ERROR" "INSTALL_DIR is not defined" exit 1 fi # Create directories and check for errors DIRECTORIES=( "$INSTALL_DIR" "$INSTALL_DIR/logs" "$INSTALL_DIR/public/js" "$INSTALL_DIR/public/css" "$INSTALL_DIR/modules" "$INSTALL_DIR/data" ) for dir in "${DIRECTORIES[@]}"; do if ! mkdir -p "$dir"; then log "ERROR" "Failed to create directory: $dir" exit 1 fi done log "INFO" "Directories created successfully." }