move os detection

This commit is contained in:
shocknet-justin 2025-11-26 17:02:41 -05:00
parent 688033769d
commit dd4d156229
2 changed files with 99 additions and 113 deletions

View file

@ -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"

View file

@ -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"
}