This commit is contained in:
pika 2025-05-23 20:13:15 +02:00
parent 73049cbde6
commit bf57d47fed
3 changed files with 237 additions and 320 deletions

View file

@ -73,6 +73,10 @@ echo_error() {
echo "${BOLD}${RED}${UNDERLINE}ERROR:${NC}${BRIGHT_RED} $1 ${NC}" >&2
}
echo-error() {
echo "${BOLD}${RED}${UNDERLINE}ERROR:${NC}${BRIGHT_RED} $1 ${NC}" >&2
}
# INFO:
# ↓ should get set in the install script itself
# ↓
@ -107,84 +111,64 @@ echo_pkg() {
}
echo_info() {
echo "${BOLD}${BLUE}INFO:${NC}${BRIGHT_BLUE} $1${NC}"
echo "${BOLD}${BLUE}INFO:${NC} $1${NC}"
}
echo_info() {
echo "${BOLD}${BLUE}INFO:${NC} $1${NC}"
}
echo-warning() {
echo "${BOLD}${YELLOW}WARNING:${NC} $1${NC}"
}
echo_warning() {
echo "${BOLD}${YELLOW}WARNING:${NC}${BRIGHT_YELLOW} $1${NC}"
echo "${BOLD}${YELLOW}WARNING:${NC} $1${NC}"
}
echo-note() {
echo "${BOLD}${GREEN}NOTE:${NC} $1${NC}"
}
echo_note() {
echo "${BOLD}${GREEN}NOTE:${NC}${BRIGHT_GREEN} $1${NC}"
echo "${BOLD}${GREEN}NOTE:${NC} $1${NC}"
}
# ─< Check if the given command exists silently >─────────────────────────────────────────
command_exists() {
command -v "$@" >/dev/null 2>&1
}
command-exists() {
command -v "$@" >/dev/null 2>&1
}
silentexec() {
"$@" >/dev/null 2>&1
}
source_script() {
local url="$1"
local import="$(mktemp)"
# ─< if $1 is a local file, source this one instead >─────────────────────────────────────
if [ -f "$url" ]; then
source "$url"
sleep 0.1
return 0
else
# ─< if $1 is a url, grab it and source it, also deletes afterwards >─────────────────────
if command_exists curl; then
curl -fsSL $url -o $import
elif command_exists wget; then
wget -o $import $url
else
echo "curl/wget is required, but missing.."
exit 69
fi
source "$import"
echo "${BLUE}Sourcing external script:${NC} $url"
sleep 0.1
rm -f "$import"
fi
}
# just an alias for source_script
source-script() {
source_script "$1"
}
run-silent() {
[[ -z $silent ]] &&
"$@" ||
# else
if $silent; then
silentexec "$@"
else
"$@"
fi
# fi
if [[ -z $silent ]] || ! $silent; then
"$@"
else
silentexec "$@"
fi
}
# if given an array, it checks if the command is available, and if not - installs all packages in that array one by one
checkAndInstall() {
local pkg=$1
# echo "DEBUG:: GOT ARRAY :: ${@}"
# ─< if it's not a list, then just check and install the package.. >──────────────────────
# INFO: if it's not a list, then just check and install the package..
if [[ -z $2 ]]; then
if ! command_exists "$1"; then
if run-silent pkg-install "$1"; then
echo_pkg deps "$1 - ${GREEN}installed"
if ! command_exists "$pkg"; then
echo_pkg deps "Installing $pkg"
if run-silent pkg-install "$pkg"; then
echo_pkg deps "Installed $pkg"
else
echo_pkg deps "$1 is already installed.."
echo_pkg deps "$pkg is already installed.."
fi
else
echo_pkg deps "skipping $1 - as it's ${RED}already installed.."
echo_pkg deps "skipping $pkg - as it's ${RED}already installed.."
fi
else
# ─< else go though the list of items and do the same >───────────────────────────────────
@ -220,7 +204,6 @@ check_env() {
_sudo=""
fi
pikaCheckFile="$HOME/.cache/pika_script_detection"
checkFileAge() {
local file="$1"
[[ ! -e "$file" ]] && return 2 # File doesn't exist
@ -232,6 +215,8 @@ check_env() {
fi
}
pikaCheckFile="$HOME/.cache/pika_script_detection"
if [ -f "$pikaCheckFile" ]; then
if checkFileAge $pikaCheckFile; then
PIKA_INIT=true
@ -478,6 +463,7 @@ get_packager() {
dist_setup() {
case "$distro" in
debian)
echo "${BOLD}Found ${RED}debian${NC}"
_setup debian
# Codename support
if [ -n $VERSION_CODENAME ]; then
@ -490,6 +476,7 @@ dist_setup() {
fi
;;
ubuntu)
echo "${BOLD}Found ${BRIGHT_YELLOW}ubuntu${NC}"
_setup ubuntu
# Codename support
if [ -n $VERSION_CODENAME ]; then
@ -502,12 +489,14 @@ dist_setup() {
fi
;;
fedora)
echo "${BOLD}Found ${BRIGHT_BLUE}fedora${NC}"
_setup fedora
# Add version-specific var like: fedora_40=true
fedora_version="fedora_${VERSION_ID//./_}"
eval "$fedora_version=true"
;;
arch)
echo "${BOLD}Found ${BLUE}arch${NC}"
_setup arch
if command_exists yay || command_exists paru; then
aur=true
@ -515,16 +504,20 @@ dist_setup() {
aur=false
fi
;;
alpine | opensuse)
alpine)
echo "${BOLD}Found ${BLUE}alpine${NC}"
_setup $distro
;;
opensuse)
echo "${BOLD}Found ${GREEN}opensuse${NC}"
_setup $distro
;;
# opensuse)
# _setup opensuse
# ;;
esac
}
update_package_list() {
local USER="${USER:-$(whoami)}"
echo_info "Refreshing repository sources.."
case "$distro" in
ubuntu | debian) run-silent $_sudo apt-get update ;;
@ -533,21 +526,31 @@ update_package_list() {
if command_exists pacman; then
if ! checkAUR; then
local paruBuildDir="/opt/builds"
local USER="$(whoami)"
$_sudo mkdir -p "$paruBuildDir"
# if ! command_exists paru; then
echo "${YELLOW}Installing paru as AUR helper...${NC}"
run-silent $_sudo pacman -S --needed --noconfirm base-devel git
cd "$paruBuildDir" && $_sudo git clone https://aur.archlinux.org/paru-bin.git paru
$_sudo pacman -S --needed --noconfirm base-devel git
cd "$paruBuildDir" && echo "${YELLOW} Cloning paru from ${NC}https://aur.archlinux.org/paru-bin.git"
$_sudo git clone https://aur.archlinux.org/paru-bin.git paru
$_sudo chown -R "$USER": "$paruBuildDir/paru"
cd "$paruBuildDir/paru" && makepkg --noconfirm -si
echo "${GREEN}Paru installed${NC}"
# else
# printf "%b\n" "${GREEN}Paru already installed${RC}"
# fi
cd "$paruBuildDir/paru"
echo "${GREEN}${BOLD}Installing paru"
makepkg --noconfirm -si
sleep 1
if command_exists paru; then
echo "${GREEN}Paru installed${NC}"
else
echo "${RED}${BOLD}Error: Something went wrong when installing paru!"
fi
fi
fi
sleep 0.01
if command_exists paru; then
run-silent paru -Sy
elif command_exists yay; then
@ -571,17 +574,16 @@ if check_env; then
# WHY:
# ╭─────────────────────────────────────────────────────────────────────────╮
# │ check if the script has run-silent at least once, so that the sources dont │
# │ check if the script has run at least once, so that the sources dont │
# │ have to get updated again.. │
# ╰─────────────────────────────────────────────────────────────────────────╯
if [[ -z "$PIKA_INIT" ]]; then
echo_pkg "First time being imported.."
echo_pkg "First time importing.."
if update_package_list; then
touch "$pikaCheckFile"
silentexec touch "$pikaCheckFile"
fi
else
echo_pkg "Skipping repo refresh (PIKA_INIT is already set)"
echo_pkg "Skipping repo refresh"
fi
fi