50 lines
1.4 KiB
Bash
Executable File
50 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# Detect system distro and architecture
|
|
|
|
detect_system() {
|
|
# Detect architecture
|
|
ARCH=$(uname -m)
|
|
|
|
# Detect distribution
|
|
if [ -f /etc/os-release ]; then
|
|
. /etc/os-release
|
|
DISTRO_NAME=${ID,,} # Convert to lowercase
|
|
|
|
# Check if it's an Arch-based distro
|
|
for arch_distro in "${ARCH_DISTROS[@]}"; do
|
|
if [[ "$DISTRO_NAME" == *"$arch_distro"* ]]; then
|
|
DISTRO="arch"
|
|
return
|
|
fi
|
|
done
|
|
|
|
# Check if it's a Debian-based distro
|
|
for deb_distro in "${DEB_DISTROS[@]}"; do
|
|
if [[ "$DISTRO_NAME" == *"$deb_distro"* ]]; then
|
|
DISTRO="debian"
|
|
return
|
|
fi
|
|
done
|
|
|
|
# Check if it's an RPM-based distro
|
|
for rpm_distro in "${RPM_DISTROS[@]}"; do
|
|
if [[ "$DISTRO_NAME" == *"$rpm_distro"* ]]; then
|
|
DISTRO="redhat"
|
|
return
|
|
fi
|
|
done
|
|
|
|
# If we can't determine the distro family, just use the ID
|
|
DISTRO="$DISTRO_NAME"
|
|
elif [ -f /etc/arch-release ]; then
|
|
DISTRO="arch"
|
|
elif [ -f /etc/debian_version ]; then
|
|
DISTRO="debian"
|
|
elif [ -f /etc/redhat-release ]; then
|
|
DISTRO="redhat"
|
|
else
|
|
echo "Unable to determine distribution. Defaulting to generic."
|
|
DISTRO="generic"
|
|
fi
|
|
}
|