mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2025-12-06 05:25:41 -05:00
86 lines
2.4 KiB
Bash
Executable File
86 lines
2.4 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -e
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Check for root privileges
|
|
if [ "$(id -u)" == "0" ]; then
|
|
printf "%bError: This script must not be run as root%b\n" "$RED" "$NC"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if running on Linux
|
|
if [ "$(uname)" != "Linux" ]; then
|
|
printf "%bError: This installer only supports Linux systems%b\n" "$RED" "$NC"
|
|
exit 1
|
|
fi
|
|
|
|
# Detect architecture
|
|
ARCH=$(uname -m)
|
|
case "$ARCH" in
|
|
x86_64)
|
|
ARCH="amd64"
|
|
;;
|
|
aarch64)
|
|
ARCH="arm64"
|
|
;;
|
|
*)
|
|
printf "%bError: Unsupported architecture: %s%b\n" "$RED" "$ARCH" "$NC"
|
|
printf "This installer only supports x86_64 (amd64) and aarch64 (arm64) architectures\n"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# Get the latest release version
|
|
LATEST_VERSION=$(curl -s https://api.github.com/repos/AvengeMedia/DankMaterialShell/releases/latest | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
|
|
|
|
if [ -z "$LATEST_VERSION" ]; then
|
|
printf "%bError: Could not fetch latest version%b\n" "$RED" "$NC"
|
|
exit 1
|
|
fi
|
|
|
|
printf "%bInstalling Dankinstall %s for %s...%b\n" "$GREEN" "$LATEST_VERSION" "$ARCH" "$NC"
|
|
|
|
# Download and install
|
|
TEMP_DIR=$(mktemp -d)
|
|
cd "$TEMP_DIR" || exit 1
|
|
|
|
# Download the gzipped binary and its checksum
|
|
printf "%bDownloading installer...%b\n" "$GREEN" "$NC"
|
|
curl -L "https://github.com/AvengeMedia/DankMaterialShell/releases/download/$LATEST_VERSION/dankinstall-$ARCH.gz" -o "installer.gz"
|
|
curl -L "https://github.com/AvengeMedia/DankMaterialShell/releases/download/$LATEST_VERSION/dankinstall-$ARCH.gz.sha256" -o "expected.sha256"
|
|
|
|
# Get the expected checksum
|
|
EXPECTED_CHECKSUM=$(cat expected.sha256 | awk '{print $1}')
|
|
|
|
# Calculate actual checksum
|
|
printf "%bVerifying checksum...%b\n" "$GREEN" "$NC"
|
|
ACTUAL_CHECKSUM=$(sha256sum installer.gz | awk '{print $1}')
|
|
|
|
# Compare checksums
|
|
if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ]; then
|
|
printf "%bError: Checksum verification failed%b\n" "$RED" "$NC"
|
|
printf "Expected: %s\n" "$EXPECTED_CHECKSUM"
|
|
printf "Got: %s\n" "$ACTUAL_CHECKSUM"
|
|
printf "The downloaded file may be corrupted or tampered with\n"
|
|
cd - > /dev/null
|
|
rm -rf "$TEMP_DIR"
|
|
exit 1
|
|
fi
|
|
|
|
# Decompress the binary
|
|
printf "%bDecompressing installer...%b\n" "$GREEN" "$NC"
|
|
gunzip installer.gz
|
|
chmod +x installer
|
|
|
|
# Execute the installer
|
|
printf "%bRunning installer...%b\n" "$GREEN" "$NC"
|
|
./installer
|
|
|
|
# Cleanup
|
|
cd - > /dev/null
|
|
rm -rf "$TEMP_DIR" |