#!/usr/bin/env sh
printf '%b' "\033c"
printf '%s\n' '#'
printf '%s\n' '# palera1n install script'
printf '%s\n' '#'
printf '%s\n' '# ======== Made by ======='
printf '%s\n' '# Samara, Staturnz'
printf '%s\n' '# =========================='
printf '%s\n' ''
RED='\033[0;31m'
YELLOW='\033[0;33m'
DARK_GRAY='\033[90m'
LIGHT_CYAN='\033[0;96m'
DARK_CYAN='\033[0;36m'
NO_COLOR='\033[0m'
BOLD='\033[1m'
=========
Logging
=========
error() {
printf '%b\n' " - [${DARK_GRAY}$(date +'%m/%d/%y %H:%M:%S')${NO_COLOR}] ${RED}${BOLD}${NO_COLOR}: ${RED}$1${NO_COLOR}"
}
info() {
printf '%b\n' " - [${DARK_GRAY}$(date +'%m/%d/%y %H:%M:%S')${NO_COLOR}] ${DARK_CYAN}${BOLD}${NO_COLOR}: ${DARK_CYAN}$1${NO_COLOR}"
}
warning() {
printf '%b\n' " - [${DARK_GRAY}$(date +'%m/%d/%y %H:%M:%S')${NO_COLOR}] ${YELLOW}${BOLD}${NO_COLOR}: ${YELLOW}$1${NO_COLOR}"
}
=========
Check if id is 0
=========
[ "$(id -u)" -ne 0 ] && {
warning "In order to use this script, run with root or use sudo."
exit 1
}
=========
Variables
=========
os=$(uname)
os_name="$os"
install_path="/usr/local/bin/palera1n"
download() {
status=$(curl --write-out '%{http_code}' -sLo $install_path "$1")
if [ "$status" -ne 200 ]; then
error "palera1n failed to download. Please check your internet connection and try again. (Status: $status)"
exit 1
fi
}
remove_palera1n() {
if [ -e "${install_path}" ]; then
rm ${install_path}
info "palera1n was successfully removed from ${install_path}."
else
error "palera1n is not installed at ${install_path}."
exit 1
fi
}
print_help() {
cat << EOF
Usage: $0 [-hlnr]
Options:
-h, --help Print this help
-r, --remove Uninstall palera1n
EOF
}
=========
Dependancies
=========
case "$os" in
Linux)
if ! command -v curl >/dev/null 2>&1; then
error "If you want to use this script, please install curl."
exit 1
fi
;;
esac
=========
OS and Architecture
=========
case "$os" in
Linux)
arch_check=$(uname -m)
os_name="Linux"
;;
Darwin)
if [ "$(uname -r | cut -d. -f1)" -gt "15" ]; then
os_name="macOS"
elif [ "$(uname -m | head -c2)" = "iP" ]; then
error "palera1n install script is not meant to used on iOS devices. Please use on a PC."
exit 1
else
os_name="Mac OS X"
fi
arch_check=$(uname -m)
;;
*)
error "Unknown or unsupported OS ($os)."
exit 1
;;
esac
[ "$os" = "Linux" ] && {
grep -qi Microsoft /proc/version > /dev/null 2>&1 && {
error "palera1n is not supported on WSL. Please use another supported platform."
error "Windows not really using for manipulating OSX images, compiled in mingw tool for this working unstable and incorrectly."
exit 1
}
}
case "$arch_check" in
x86_64* | amd64)
arch=x86_64
;;
i?86 | x86*)
arch=x86
;;
aarch64* | arm64*)
arch=arm64
;;
arm*)
arch=armel
;;
*)
error "Unknown or unsupported architecture ($arch_check)."
exit 1
;;
esac
=========
Args
=========
case "$1" in
"" ) ;;
"-r" | "--remove" | "--help" | "-h" ) ;;
* )
error "Invalid option: "$1""
exit 1
;;
esac
case "$1" in
"--remove" | "-r")
remove_palera1n
exit 0
;;
"--help" | "-h")
print_help
exit 1
;;
)
download_version=$(curl -s https://api.github.com/repos/palera1n/palera1n/releases | grep -m 1 -o '"tag_name": "[^"]' | sed 's/"tag_name": "//')
info "Using release tag ${download_version}."
;;
esac
info "Found OS type ($os_name $arch)."
=========
Run
=========
info "Fetching palera1n (${prefix}${download_version}) build for ($os_name $arch)."
mkdir -p /usr/local/bin
rm /usr/local/bin/palera1n > /dev/null 2>&1
case "$os" in
Linux)
download "https://github.com/palera1n/palera1n/releases/download/${download_version}/palera1n-linux-${arch}"
;;
Darwin)
download "https://github.com/palera1n/palera1n/releases/download/${download_version}/palera1n-macos-${arch}"
;;
esac
if [ -f "$install_path" ]; then
chmod +x $install_path
if ! palera1n --version > /dev/null 2>&1;
then
error "palera1n installation is corrupted. Please check your internet connection and try again."
exit 1
fi
info "palera1n is now installed at ${install_path}."
else
error "palera1n failed to install. Please check your internet connection and try again."
exit 1
fi
Originally posted by @Yilmazcan123 in #13