diff --git a/scripts/handle_macos.sh b/scripts/handle_macos.sh index c9e43f20..9474ae55 100644 --- a/scripts/handle_macos.sh +++ b/scripts/handle_macos.sh @@ -10,14 +10,11 @@ handle_macos() { export LAUNCH_AGENTS_DIR="$HOME/Library/LaunchAgents" mkdir -p "$LAUNCH_AGENTS_DIR" - # Install Homebrew if needed + # Install Homebrew if needed (skipped if not found, we don't force it) if ! command -v brew &> /dev/null; then - log "${PRIMARY_COLOR}Installing Homebrew...${RESET_COLOR}" - /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" || { - log_error "Failed to install Homebrew" 1 - } + log "${PRIMARY_COLOR}Homebrew not found. Proceeding without it...${RESET_COLOR}" fi - + # Install LND log "${PRIMARY_COLOR}Installing${RESET_COLOR} ${SECONDARY_COLOR}LND${RESET_COLOR}..." lnd_output=$(install_lnd) diff --git a/scripts/install.sh b/scripts/install.sh index 8f54170f..882df457 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -28,6 +28,19 @@ log_error() { exit $2 } +# Helper to download files using wget or curl +download() { + local url="$1" + local dest="$2" + if command -v wget &> /dev/null; then + wget -q "$url" -O "$dest" + elif command -v curl &> /dev/null; then + curl -sL "$url" -o "$dest" + else + log_error "Neither wget nor curl found. Please install one." 1 + fi +} + modules=( "utils" @@ -66,7 +79,7 @@ SCRIPTS_URL="${BASE_URL}/scripts/" TMP_DIR=$(mktemp -d) for module in "${modules[@]}"; do - wget -q "${SCRIPTS_URL}${module}.sh" -O "${TMP_DIR}/${module}.sh" || log_error "Failed to download ${module}.sh" 1 + download "${SCRIPTS_URL}${module}.sh" "${TMP_DIR}/${module}.sh" || log_error "Failed to download ${module}.sh" 1 source "${TMP_DIR}/${module}.sh" || log_error "Failed to source ${module}.sh" 1 done diff --git a/scripts/install_lightning_pub.sh b/scripts/install_lightning_pub.sh index a5cb442c..36a959e7 100755 --- a/scripts/install_lightning_pub.sh +++ b/scripts/install_lightning_pub.sh @@ -19,7 +19,7 @@ install_lightning_pub() { USER_HOME=$HOME USER_NAME=$(whoami) - wget -q $REPO_URL -O $USER_HOME/lightning_pub.tar.gz > /dev/null 2>&1 || { + download "$REPO_URL" "$USER_HOME/lightning_pub.tar.gz" > /dev/null 2>&1 || { log "${PRIMARY_COLOR}Failed to download Lightning.Pub.${RESET_COLOR}" return 1 } @@ -37,7 +37,7 @@ install_lightning_pub() { log "Existing installation found. Checking for updates..." # Check if update is needed by comparing commit hashes - API_RESPONSE=$(wget -qO- "https://api.github.com/repos/${REPO}/commits/${BRANCH}" 2>&1 | tee /tmp/api_response.log) + API_RESPONSE=$(download_stdout "https://api.github.com/repos/${REPO}/commits/${BRANCH}" 2>&1 | tee /tmp/api_response.log) if grep -q '"message"[[:space:]]*:[[:space:]]*"API rate limit exceeded"' <<< "$API_RESPONSE"; then log_error "GitHub API rate limit exceeded. Please wait a while before trying again." 1 fi diff --git a/scripts/install_lnd.sh b/scripts/install_lnd.sh index 7c09c725..c525572b 100755 --- a/scripts/install_lnd.sh +++ b/scripts/install_lnd.sh @@ -9,7 +9,7 @@ install_lnd() { USER_NAME=$(whoami) log "Checking latest LND version..." - local api_response=$(wget -qO- https://api.github.com/repos/lightningnetwork/lnd/releases/latest) + local api_response=$(download_stdout "https://api.github.com/repos/lightningnetwork/lnd/releases/latest") LND_VERSION=$(json_value "tag_name" "$api_response") log "Latest LND version: $LND_VERSION" @@ -51,7 +51,7 @@ install_lnd() { log "${PRIMARY_COLOR}Downloading${RESET_COLOR} ${SECONDARY_COLOR}LND${RESET_COLOR}..." # Start the download - wget -q $LND_URL -O $USER_HOME/lnd.tar.gz || { + download "$LND_URL" "$USER_HOME/lnd.tar.gz" || { log "${PRIMARY_COLOR}Failed to download LND.${RESET_COLOR}" exit 1 } diff --git a/scripts/install_nodejs.sh b/scripts/install_nodejs.sh index 786315aa..53824e3c 100755 --- a/scripts/install_nodejs.sh +++ b/scripts/install_nodejs.sh @@ -13,9 +13,9 @@ install_nodejs() { [ -s "${NVM_DIR}/nvm.sh" ] && \. "${NVM_DIR}/nvm.sh" if ! command -v nvm &> /dev/null; then - local nvm_api=$(wget -qO- https://api.github.com/repos/nvm-sh/nvm/releases/latest) + local nvm_api=$(download_stdout "https://api.github.com/repos/nvm-sh/nvm/releases/latest") NVM_VERSION=$(json_value "tag_name" "$nvm_api") - wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh | bash > /dev/null 2>&1 + download_stdout "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" | bash > /dev/null 2>&1 export NVM_DIR="${NVM_DIR}" [ -s "${NVM_DIR}/nvm.sh" ] && \. "${NVM_DIR}/nvm.sh" fi diff --git a/scripts/utils.sh b/scripts/utils.sh index 0d7d9c39..7f5c8ccb 100755 --- a/scripts/utils.sh +++ b/scripts/utils.sh @@ -29,12 +29,19 @@ detect_os_arch() { } check_deps() { - for cmd in wget grep stat tar; do + for cmd in grep stat tar; do if ! command -v $cmd &> /dev/null; then log "Missing system dependency: $cmd. Install $cmd via your package manager and retry." exit 1 fi done + + # Check for wget or curl (one is required) + if ! command -v wget &> /dev/null && ! command -v curl &> /dev/null; then + log "Missing system dependency: wget or curl. Install via your package manager and retry." + exit 1 + fi + if ! command -v sha256sum &> /dev/null && ! command -v shasum &> /dev/null; then log "Missing system dependency: sha256sum or shasum." exit 1 @@ -68,4 +75,31 @@ json_value() { else echo "$2" | grep -oP "\"${key}\": \"\\K[^\"]+" fi +} + +# Download file (wget or curl) +download() { + local url="$1" + local dest="$2" + if command -v wget &> /dev/null; then + wget -q "$url" -O "$dest" + elif command -v curl &> /dev/null; then + curl -sL "$url" -o "$dest" + else + log "Error: Neither wget nor curl found." + return 1 + fi +} + +# Download to stdout (wget or curl) +download_stdout() { + local url="$1" + if command -v wget &> /dev/null; then + wget -qO- "$url" + elif command -v curl &> /dev/null; then + curl -sL "$url" + else + log "Error: Neither wget nor curl found." + return 1 + fi } \ No newline at end of file