From dd4d1562296c4d921fb4234b9287dec0bce2869d Mon Sep 17 00:00:00 2001 From: shocknet-justin Date: Wed, 26 Nov 2025 17:02:41 -0500 Subject: [PATCH] move os detection --- scripts/install.sh | 105 +++++++++++++++++++++++++++++++++++++++++--- scripts/utils.sh | 107 --------------------------------------------- 2 files changed, 99 insertions(+), 113 deletions(-) delete mode 100755 scripts/utils.sh diff --git a/scripts/install.sh b/scripts/install.sh index e2121917..6c8e7c76 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -29,22 +29,115 @@ log_error() { exit $2 } -# Helper to download files using wget or curl +# Detect OS early for bootstrap +OS="$(uname -s)" +case "$OS" in + Linux*) OS=Linux;; + Darwin*) OS=Mac;; + *) OS="UNKNOWN" +esac + +detect_os_arch() { + # OS already detected above, but we need ARCH and systemctl check + ARCH="$(uname -m)" + case "$ARCH" in + x86_64) ARCH=amd64;; + arm64|aarch64|armv8*) ARCH=arm64;; + armv7*) ARCH=armv7;; + *) ARCH="UNKNOWN" + esac + + if [ "$OS" = "Linux" ] && command -v systemctl &> /dev/null; then + SYSTEMCTL_AVAILABLE=true + else + SYSTEMCTL_AVAILABLE=false + fi +} + +PRIMARY_COLOR="\e[38;5;208m" +SECONDARY_COLOR="\e[38;5;165m" +RESET_COLOR="\e[0m" + +check_deps() { + 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 + fi +} + +# Cross-platform sed in-place +sed_i() { + if [ "$OS" = "Mac" ]; then + sed -i '' "$@" + else + sed -i "$@" + fi +} + +# Cross-platform mktemp with parent directory +mktemp_in() { + local parent="$1" + if [ "$OS" = "Mac" ]; then + mktemp -d "${parent}/tmp.XXXXXX" + else + mktemp -d -p "$parent" + fi +} + +# Extract JSON value (cross-platform) +json_value() { + local key="$1" + if [ "$OS" = "Mac" ]; then + echo "$2" | awk -F"\"${key}\"[[:space:]]*:[[:space:]]*\"" '{print $2}' | awk -F'"' '{print $1}' | head -1 + 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 + if [ "$OS" = "Mac" ]; then curl -fsL "$url" -o "$dest" else - log_error "Neither wget nor curl found. Please install one." 1 + wget -q "$url" -O "$dest" fi } +# Download to stdout (wget or curl) +download_stdout() { + local url="$1" + if [ "$OS" = "Mac" ]; then + curl -fsL "$url" + else + wget -qO- "$url" + fi +} + +# Get latest release tag from GitHub (via API) +get_latest_release_tag() { + local repo="$1" + local url="https://api.github.com/repos/${repo}/releases/latest" + local api_json=$(download_stdout "$url") + json_value "tag_name" "$api_json" +} + modules=( - "utils" "ports" "install_lnd" "install_nodejs" diff --git a/scripts/utils.sh b/scripts/utils.sh deleted file mode 100755 index 8c820e4a..00000000 --- a/scripts/utils.sh +++ /dev/null @@ -1,107 +0,0 @@ -#!/bin/bash - -PRIMARY_COLOR="\e[38;5;208m" -SECONDARY_COLOR="\e[38;5;165m" -RESET_COLOR="\e[0m" - -detect_os_arch() { - OS="$(uname -s)" - ARCH="$(uname -m)" - case "$OS" in - Linux*) OS=Linux;; - Darwin*) OS=Mac;; - CYGWIN*) OS=Cygwin;; - MINGW*) OS=MinGw;; - *) OS="UNKNOWN" - esac - case "$ARCH" in - x86_64) ARCH=amd64;; - arm64|aarch64|armv8*) ARCH=arm64;; - armv7*) ARCH=armv7;; - *) ARCH="UNKNOWN" - esac - - if [ "$OS" = "Linux" ] && command -v systemctl &> /dev/null; then - SYSTEMCTL_AVAILABLE=true - else - SYSTEMCTL_AVAILABLE=false - fi -} - -check_deps() { - 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 - fi -} - -# Cross-platform sed in-place -sed_i() { - if [ "$OS" = "Mac" ]; then - sed -i '' "$@" - else - sed -i "$@" - fi -} - -# Cross-platform mktemp with parent directory -mktemp_in() { - local parent="$1" - if [ "$OS" = "Mac" ]; then - mktemp -d "${parent}/tmp.XXXXXX" - else - mktemp -d -p "$parent" - fi -} - -# Extract JSON value (cross-platform) -json_value() { - local key="$1" - if [ "$OS" = "Mac" ]; then - echo "$2" | awk -F"\"${key}\"[[:space:]]*:[[:space:]]*\"" '{print $2}' | awk -F'"' '{print $1}' | head -1 - else - echo "$2" | grep -oP "\"${key}\": \"\\K[^\"]+" - fi -} - -# Download file (wget or curl) -download() { - local url="$1" - local dest="$2" - if [ "$OS" = "Mac" ]; then - curl -fsL "$url" -o "$dest" - else - wget -q "$url" -O "$dest" - fi -} - -# Download to stdout (wget or curl) -download_stdout() { - local url="$1" - if [ "$OS" = "Mac" ]; then - curl -fsL "$url" - else - wget -qO- "$url" - fi -} - -# Get latest release tag from GitHub (via API) -get_latest_release_tag() { - local repo="$1" - local url="https://api.github.com/repos/${repo}/releases/latest" - local api_json=$(download_stdout "$url") - json_value "tag_name" "$api_json" -} \ No newline at end of file