dream.sh
This commit is contained in:
parent
73049cbde6
commit
bf57d47fed
3 changed files with 237 additions and 320 deletions
142
distros.sh
142
distros.sh
|
@ -73,6 +73,10 @@ echo_error() {
|
||||||
echo "${BOLD}${RED}${UNDERLINE}ERROR:${NC}${BRIGHT_RED} $1 ${NC}" >&2
|
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:
|
# INFO:
|
||||||
# ↓ should get set in the install script itself
|
# ↓ should get set in the install script itself
|
||||||
# ↓
|
# ↓
|
||||||
|
@ -107,84 +111,64 @@ echo_pkg() {
|
||||||
}
|
}
|
||||||
|
|
||||||
echo_info() {
|
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_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_note() {
|
||||||
echo "${BOLD}${GREEN}NOTE:${NC}${BRIGHT_GREEN} $1${NC}"
|
echo "${BOLD}${GREEN}NOTE:${NC} $1${NC}"
|
||||||
}
|
}
|
||||||
|
|
||||||
# ─< Check if the given command exists silently >─────────────────────────────────────────
|
# ─< Check if the given command exists silently >─────────────────────────────────────────
|
||||||
command_exists() {
|
command_exists() {
|
||||||
command -v "$@" >/dev/null 2>&1
|
command -v "$@" >/dev/null 2>&1
|
||||||
}
|
}
|
||||||
|
command-exists() {
|
||||||
|
command -v "$@" >/dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
silentexec() {
|
silentexec() {
|
||||||
"$@" >/dev/null 2>&1
|
"$@" >/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() {
|
run-silent() {
|
||||||
[[ -z $silent ]] &&
|
if [[ -z $silent ]] || ! $silent; then
|
||||||
"$@" ||
|
"$@"
|
||||||
# else
|
else
|
||||||
if $silent; then
|
silentexec "$@"
|
||||||
silentexec "$@"
|
fi
|
||||||
else
|
|
||||||
"$@"
|
|
||||||
fi
|
|
||||||
# fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# if given an array, it checks if the command is available, and if not - installs all packages in that array one by one
|
# if given an array, it checks if the command is available, and if not - installs all packages in that array one by one
|
||||||
checkAndInstall() {
|
checkAndInstall() {
|
||||||
|
local pkg=$1
|
||||||
# echo "DEBUG:: GOT ARRAY :: ${@}"
|
# 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 [[ -z $2 ]]; then
|
||||||
if ! command_exists "$1"; then
|
if ! command_exists "$pkg"; then
|
||||||
if run-silent pkg-install "$1"; then
|
echo_pkg deps "Installing $pkg"
|
||||||
echo_pkg deps "$1 - ${GREEN}installed"
|
if run-silent pkg-install "$pkg"; then
|
||||||
|
echo_pkg deps "Installed $pkg"
|
||||||
else
|
else
|
||||||
echo_pkg deps "$1 is already installed.."
|
echo_pkg deps "$pkg is already installed.."
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo_pkg deps "skipping $1 - as it's ${RED}already installed.."
|
echo_pkg deps "skipping $pkg - as it's ${RED}already installed.."
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
# ─< else go though the list of items and do the same >───────────────────────────────────
|
# ─< else go though the list of items and do the same >───────────────────────────────────
|
||||||
|
@ -220,7 +204,6 @@ check_env() {
|
||||||
_sudo=""
|
_sudo=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
pikaCheckFile="$HOME/.cache/pika_script_detection"
|
|
||||||
checkFileAge() {
|
checkFileAge() {
|
||||||
local file="$1"
|
local file="$1"
|
||||||
[[ ! -e "$file" ]] && return 2 # File doesn't exist
|
[[ ! -e "$file" ]] && return 2 # File doesn't exist
|
||||||
|
@ -232,6 +215,8 @@ check_env() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pikaCheckFile="$HOME/.cache/pika_script_detection"
|
||||||
|
|
||||||
if [ -f "$pikaCheckFile" ]; then
|
if [ -f "$pikaCheckFile" ]; then
|
||||||
if checkFileAge $pikaCheckFile; then
|
if checkFileAge $pikaCheckFile; then
|
||||||
PIKA_INIT=true
|
PIKA_INIT=true
|
||||||
|
@ -478,6 +463,7 @@ get_packager() {
|
||||||
dist_setup() {
|
dist_setup() {
|
||||||
case "$distro" in
|
case "$distro" in
|
||||||
debian)
|
debian)
|
||||||
|
echo "${BOLD}Found ${RED}debian${NC}"
|
||||||
_setup debian
|
_setup debian
|
||||||
# Codename support
|
# Codename support
|
||||||
if [ -n $VERSION_CODENAME ]; then
|
if [ -n $VERSION_CODENAME ]; then
|
||||||
|
@ -490,6 +476,7 @@ dist_setup() {
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
ubuntu)
|
ubuntu)
|
||||||
|
echo "${BOLD}Found ${BRIGHT_YELLOW}ubuntu${NC}"
|
||||||
_setup ubuntu
|
_setup ubuntu
|
||||||
# Codename support
|
# Codename support
|
||||||
if [ -n $VERSION_CODENAME ]; then
|
if [ -n $VERSION_CODENAME ]; then
|
||||||
|
@ -502,12 +489,14 @@ dist_setup() {
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
fedora)
|
fedora)
|
||||||
|
echo "${BOLD}Found ${BRIGHT_BLUE}fedora${NC}"
|
||||||
_setup fedora
|
_setup fedora
|
||||||
# Add version-specific var like: fedora_40=true
|
# Add version-specific var like: fedora_40=true
|
||||||
fedora_version="fedora_${VERSION_ID//./_}"
|
fedora_version="fedora_${VERSION_ID//./_}"
|
||||||
eval "$fedora_version=true"
|
eval "$fedora_version=true"
|
||||||
;;
|
;;
|
||||||
arch)
|
arch)
|
||||||
|
echo "${BOLD}Found ${BLUE}arch${NC}"
|
||||||
_setup arch
|
_setup arch
|
||||||
if command_exists yay || command_exists paru; then
|
if command_exists yay || command_exists paru; then
|
||||||
aur=true
|
aur=true
|
||||||
|
@ -515,16 +504,20 @@ dist_setup() {
|
||||||
aur=false
|
aur=false
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
alpine | opensuse)
|
alpine)
|
||||||
|
echo "${BOLD}Found ${BLUE}alpine${NC}"
|
||||||
|
_setup $distro
|
||||||
|
;;
|
||||||
|
opensuse)
|
||||||
|
echo "${BOLD}Found ${GREEN}opensuse${NC}"
|
||||||
_setup $distro
|
_setup $distro
|
||||||
;;
|
;;
|
||||||
# opensuse)
|
|
||||||
# _setup opensuse
|
|
||||||
# ;;
|
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
update_package_list() {
|
update_package_list() {
|
||||||
|
local USER="${USER:-$(whoami)}"
|
||||||
|
|
||||||
echo_info "Refreshing repository sources.."
|
echo_info "Refreshing repository sources.."
|
||||||
case "$distro" in
|
case "$distro" in
|
||||||
ubuntu | debian) run-silent $_sudo apt-get update ;;
|
ubuntu | debian) run-silent $_sudo apt-get update ;;
|
||||||
|
@ -533,21 +526,31 @@ update_package_list() {
|
||||||
if command_exists pacman; then
|
if command_exists pacman; then
|
||||||
if ! checkAUR; then
|
if ! checkAUR; then
|
||||||
local paruBuildDir="/opt/builds"
|
local paruBuildDir="/opt/builds"
|
||||||
local USER="$(whoami)"
|
|
||||||
$_sudo mkdir -p "$paruBuildDir"
|
$_sudo mkdir -p "$paruBuildDir"
|
||||||
# if ! command_exists paru; then
|
|
||||||
echo "${YELLOW}Installing paru as AUR helper...${NC}"
|
echo "${YELLOW}Installing paru as AUR helper...${NC}"
|
||||||
run-silent $_sudo pacman -S --needed --noconfirm base-devel git
|
$_sudo pacman -S --needed --noconfirm base-devel git
|
||||||
cd "$paruBuildDir" && $_sudo git clone https://aur.archlinux.org/paru-bin.git paru
|
|
||||||
|
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"
|
$_sudo chown -R "$USER": "$paruBuildDir/paru"
|
||||||
cd "$paruBuildDir/paru" && makepkg --noconfirm -si
|
cd "$paruBuildDir/paru"
|
||||||
echo "${GREEN}Paru installed${NC}"
|
|
||||||
# else
|
echo "${GREEN}${BOLD}Installing paru"
|
||||||
# printf "%b\n" "${GREEN}Paru already installed${RC}"
|
makepkg --noconfirm -si
|
||||||
# fi
|
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
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
sleep 0.01
|
||||||
|
|
||||||
if command_exists paru; then
|
if command_exists paru; then
|
||||||
run-silent paru -Sy
|
run-silent paru -Sy
|
||||||
elif command_exists yay; then
|
elif command_exists yay; then
|
||||||
|
@ -571,17 +574,16 @@ if check_env; then
|
||||||
|
|
||||||
# WHY:
|
# 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.. │
|
# │ have to get updated again.. │
|
||||||
# ╰─────────────────────────────────────────────────────────────────────────╯
|
# ╰─────────────────────────────────────────────────────────────────────────╯
|
||||||
if [[ -z "$PIKA_INIT" ]]; then
|
if [[ -z "$PIKA_INIT" ]]; then
|
||||||
echo_pkg "First time being imported.."
|
echo_pkg "First time importing.."
|
||||||
|
|
||||||
if update_package_list; then
|
if update_package_list; then
|
||||||
touch "$pikaCheckFile"
|
silentexec touch "$pikaCheckFile"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo_pkg "Skipping repo refresh (PIKA_INIT is already set)"
|
echo_pkg "Skipping repo refresh"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
64
dream.sh
64
dream.sh
|
@ -95,6 +95,7 @@ echo_pkg() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# alias for echo_pkg
|
||||||
echo-pkg() {
|
echo-pkg() {
|
||||||
echo_pkg "$@"
|
echo_pkg "$@"
|
||||||
}
|
}
|
||||||
|
@ -126,7 +127,7 @@ check-and-install() {
|
||||||
# INFO: 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 [[ -z $2 ]]; then
|
||||||
spin bold yellow "Installing $pkg"
|
spin bold yellow "Installing $pkg"
|
||||||
if ! command_exists "$pkg"; then
|
if ! command-exists "$pkg"; then
|
||||||
if run pkg-install "$pkg"; then
|
if run pkg-install "$pkg"; then
|
||||||
check "Installed $pkg"
|
check "Installed $pkg"
|
||||||
else
|
else
|
||||||
|
@ -141,7 +142,7 @@ check-and-install() {
|
||||||
# ─< else go though the list of items and do the same >───────────────────────────────────
|
# ─< else go though the list of items and do the same >───────────────────────────────────
|
||||||
pen grey "Packages to install: $(pen green bold $pkgs)"
|
pen grey "Packages to install: $(pen green bold $pkgs)"
|
||||||
for pkg in "$@"; do
|
for pkg in "$@"; do
|
||||||
if ! command_exists $pkg; then
|
if ! command-exists $pkg; then
|
||||||
spin bold "$(pen bold yellow Installing) $pkg"
|
spin bold "$(pen bold yellow Installing) $pkg"
|
||||||
if run --err err pkg-install $pkg; then
|
if run --err err pkg-install $pkg; then
|
||||||
check "$(pen bold green Installed) $pkg"
|
check "$(pen bold green Installed) $pkg"
|
||||||
|
@ -159,8 +160,10 @@ check-and-install() {
|
||||||
# ─< Check if the user is root and set sudo variable if necessary >───────────────────────
|
# ─< Check if the user is root and set sudo variable if necessary >───────────────────────
|
||||||
check_env() {
|
check_env() {
|
||||||
if [ "$(id -u)" -ne 0 ]; then
|
if [ "$(id -u)" -ne 0 ]; then
|
||||||
if command_exists sudo; then
|
if command-exists sudo; then
|
||||||
_sudo="sudo -E"
|
_sudo="sudo -E"
|
||||||
|
pen blue "Testing your access.."
|
||||||
|
$_sudo echo "${GREEN}${BOLD}Aye, it works!${NC}"
|
||||||
else
|
else
|
||||||
echo-error "No sudo found and you're not root! Can't install packages."
|
echo-error "No sudo found and you're not root! Can't install packages."
|
||||||
return 69
|
return 69
|
||||||
|
@ -180,31 +183,19 @@ check_env() {
|
||||||
return 0 # File is within 1 week
|
return 0 # File is within 1 week
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
pikaCheckFile="$HOME/.cache/pika_script_detection"
|
|
||||||
|
|
||||||
if [ -f "$pikaCheckFile" ]; then
|
|
||||||
if checkFileAge $pikaCheckFile; then
|
|
||||||
PIKA_INIT=true
|
|
||||||
else
|
|
||||||
unset PIKA_INIT
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
unset PIKA_INIT
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# CAUTION:
|
# CAUTION:
|
||||||
# ╭─────────────────────────────────────────────────────────────────────╮
|
# ╭──────────────────────────────────────────────────────────────────────╮
|
||||||
# │ This can break really quickly, since the pkg-remove() function removes │
|
# │ This can break really quickly, since the pkg-remove function removes │
|
||||||
# │ without confirmation! use with CAUTION!! │
|
# │ without confirmation! use with CAUTION!! │
|
||||||
# ╰─────────────────────────────────────────────────────────────────────╯
|
# ╰──────────────────────────────────────────────────────────────────────╯
|
||||||
_setup() {
|
_setup() {
|
||||||
case "$1" in
|
case "$1" in
|
||||||
debian | ubuntu)
|
debian | ubuntu)
|
||||||
pkg-install() {
|
pkg-install() {
|
||||||
# $_sudo apt-get install --assume-yes "$@"
|
# $_sudo apt-get install --assume-yes "$@"
|
||||||
if command_exists nala; then
|
if command-exists nala; then
|
||||||
pkger=nala
|
pkger=nala
|
||||||
$_sudo nala install --assume-yes "$@"
|
$_sudo nala install --assume-yes "$@"
|
||||||
else
|
else
|
||||||
|
@ -215,7 +206,7 @@ _setup() {
|
||||||
|
|
||||||
# CAUTION:
|
# CAUTION:
|
||||||
pkg-remove() {
|
pkg-remove() {
|
||||||
if command_exists nala; then
|
if command-exists nala; then
|
||||||
pkger=nala
|
pkger=nala
|
||||||
$_sudo nala remove --assume-yes "$@"
|
$_sudo nala remove --assume-yes "$@"
|
||||||
$_sudo nala autoremove --assume-yes
|
$_sudo nala autoremove --assume-yes
|
||||||
|
@ -241,7 +232,7 @@ _setup() {
|
||||||
;;
|
;;
|
||||||
arch)
|
arch)
|
||||||
checkAUR() {
|
checkAUR() {
|
||||||
if ! command_exists yay && ! command_exists paru; then
|
if ! command-exists yay && ! command_exists paru; then
|
||||||
return 69
|
return 69
|
||||||
else
|
else
|
||||||
return 0
|
return 0
|
||||||
|
@ -249,10 +240,10 @@ _setup() {
|
||||||
}
|
}
|
||||||
|
|
||||||
pkg-install() {
|
pkg-install() {
|
||||||
if command_exists paru; then
|
if command-exists paru; then
|
||||||
pkger=paru
|
pkger=paru
|
||||||
paru -S --color always --noconfirm --needed "$@"
|
paru -S --color always --noconfirm --needed "$@"
|
||||||
elif command_exists yay; then
|
elif command-exists yay; then
|
||||||
pkger=yay
|
pkger=yay
|
||||||
yay -S --color always --noconfirm --needed "$@"
|
yay -S --color always --noconfirm --needed "$@"
|
||||||
else
|
else
|
||||||
|
@ -263,10 +254,10 @@ _setup() {
|
||||||
|
|
||||||
# CAUTION:
|
# CAUTION:
|
||||||
pkg-remove() {
|
pkg-remove() {
|
||||||
if command_exists paru; then
|
if command-exists paru; then
|
||||||
pkger=paru
|
pkger=paru
|
||||||
paru -R --color always --noconfirm "$@"
|
paru -R --color always --noconfirm "$@"
|
||||||
elif command_exists yay; then
|
elif command-exists yay; then
|
||||||
pkger=yay
|
pkger=yay
|
||||||
yay -R --color always --noconfirm "$@"
|
yay -R --color always --noconfirm "$@"
|
||||||
else
|
else
|
||||||
|
@ -306,15 +297,13 @@ _setup() {
|
||||||
get_packager() {
|
get_packager() {
|
||||||
# ─< define fallback function >───────────────────────────────────────────────────────────
|
# ─< define fallback function >───────────────────────────────────────────────────────────
|
||||||
fallback() {
|
fallback() {
|
||||||
# ─────────────────────────────────────< get packager >─────────────────────────────────────
|
|
||||||
local pkger=""
|
local pkger=""
|
||||||
for pkg in apt-get dnf pacman apk zypper; do
|
for pkg in apt-get dnf pacman apk zypper; do
|
||||||
if command_exists $pkg; then
|
if command-exists $pkg; then
|
||||||
printf "Using ${RED}${pkg}${NC} method.."
|
printf "Using ${RED}${pkg}${NC} method.."
|
||||||
pkger="$pkg"
|
pkger="$pkg"
|
||||||
|
|
||||||
# break
|
break
|
||||||
return 0
|
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@ -459,7 +448,7 @@ dist_setup() {
|
||||||
arch)
|
arch)
|
||||||
echo "${BOLD}Found ${BLUE}arch${NC}"
|
echo "${BOLD}Found ${BLUE}arch${NC}"
|
||||||
_setup arch
|
_setup arch
|
||||||
if command_exists yay || command_exists paru; then
|
if command-exists yay || command_exists paru; then
|
||||||
aur=true
|
aur=true
|
||||||
else
|
else
|
||||||
aur=false
|
aur=false
|
||||||
|
@ -493,7 +482,7 @@ update-package-list() {
|
||||||
run $_sudo dnf update || repo::check
|
run $_sudo dnf update || repo::check
|
||||||
;;
|
;;
|
||||||
arch)
|
arch)
|
||||||
if command_exists pacman; then
|
if command-exists pacman; then
|
||||||
if ! checkAUR; then
|
if ! checkAUR; then
|
||||||
pen grey bold "If this is your first time after boot (or simmilarly soon) then this might take a while.."
|
pen grey bold "If this is your first time after boot (or simmilarly soon) then this might take a while.."
|
||||||
spin bold grey "You don't have an AUR helper, gonna install one for ya!"
|
spin bold grey "You don't have an AUR helper, gonna install one for ya!"
|
||||||
|
@ -519,7 +508,7 @@ update-package-list() {
|
||||||
echo-error "${err:-}"
|
echo-error "${err:-}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if command_exists paru; then
|
if command-exists paru; then
|
||||||
pen green bold "Paru is installed"
|
pen green bold "Paru is installed"
|
||||||
else
|
else
|
||||||
echo-error "Something went wrong when installing paru!"
|
echo-error "Something went wrong when installing paru!"
|
||||||
|
@ -530,9 +519,9 @@ update-package-list() {
|
||||||
spin blue bold "Refreshing $distro repositories.."
|
spin blue bold "Refreshing $distro repositories.."
|
||||||
sleep 0.01
|
sleep 0.01
|
||||||
|
|
||||||
if command_exists paru; then
|
if command-exists paru; then
|
||||||
run paru -Sy || repo::check
|
run paru -Sy || repo::check
|
||||||
elif command_exists yay; then
|
elif command-exists yay; then
|
||||||
run yay -Sy || repo::check
|
run yay -Sy || repo::check
|
||||||
else
|
else
|
||||||
run $_sudo pacman -Sy || repo::check
|
run $_sudo pacman -Sy || repo::check
|
||||||
|
@ -697,6 +686,7 @@ spin() {
|
||||||
pen -n cyan "${spinner:0:1} "
|
pen -n cyan "${spinner:0:1} "
|
||||||
pen "${message[@]}"
|
pen "${message[@]}"
|
||||||
while true; do
|
while true; do
|
||||||
|
line
|
||||||
for ((i = 0; i < ${#spinner}; i++)); do
|
for ((i = 0; i < ${#spinner}; i++)); do
|
||||||
frame="${spinner:$i:1}"
|
frame="${spinner:$i:1}"
|
||||||
up
|
up
|
||||||
|
@ -903,7 +893,9 @@ if check_env; then
|
||||||
# │ check if the script has run 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.. │
|
# │ have to get updated again.. │
|
||||||
# ╰─────────────────────────────────────────────────────────────────────────╯
|
# ╰─────────────────────────────────────────────────────────────────────────╯
|
||||||
if [[ -z "$PIKA_INIT" ]]; then
|
pikaCheckFile="$HOME/.cache/pika_script_detection"
|
||||||
|
|
||||||
|
if [ ! -f "$pikaCheckFile" ]; then
|
||||||
pen bold grey "First time importing.."
|
pen bold grey "First time importing.."
|
||||||
|
|
||||||
if update-package-list; then
|
if update-package-list; then
|
||||||
|
|
351
test.sh
351
test.sh
|
@ -1,221 +1,144 @@
|
||||||
#!/usr/bin/env bash
|
{
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
PACKAGE=postinstallation
|
# ─< Check if the given command exists silently >─────────────────────────────────────────
|
||||||
|
command_exists() {
|
||||||
|
command -v "$@" >/dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
# ─< Check if the given command exists silently >─────────────────────────────────────────
|
# run() {
|
||||||
command_exists() {
|
# if $silent; then
|
||||||
command -v "$@" >/dev/null 2>&1
|
# # silentexec "$@" &
|
||||||
}
|
# spin "Installing packages" &
|
||||||
|
# silentexec "$@"
|
||||||
|
# else
|
||||||
|
# "$@"
|
||||||
|
# fi
|
||||||
|
# }
|
||||||
|
|
||||||
# if command_exists "$PACKAGE"; then
|
# WHY:
|
||||||
# echo_warning "$PACKAGE is already installed!"
|
# This import will give you the following variables:
|
||||||
# echo_warning "Exiting now!"
|
# _sudo="sudo -E" <- only if non root user
|
||||||
# exit 69
|
# distro = <distro name, like 'arch', 'debian', 'fedora'..>
|
||||||
# fi
|
# arch = bool
|
||||||
|
# fedora = bool
|
||||||
# WHY:
|
# opensuse = bool....
|
||||||
# This import will give you the following variables:
|
# You can then use it for, `if $arch; then`
|
||||||
# _sudo="sudo -E" <- only if non root user
|
# Also this gives you the _install command, which installs a package pased on the packagemanager/distro used.
|
||||||
# distro = <distro name, like 'arch', 'debian', 'fedora'..>
|
# CAUTION:
|
||||||
# arch = bool
|
# This only wokrs for generic package names, like neovim, or vim, or tmux etc..
|
||||||
# fedora = bool
|
# not every package packagemanager has the same packagenames for their packages..
|
||||||
# opensuse = bool....
|
getImports() {
|
||||||
# You can then use it for, `if $arch; then`
|
local url="$1"
|
||||||
# Also this gives you the _install and _remove command, which installs/removes a package pased on the packagemanager/distro used.
|
local import="$(mktemp)"
|
||||||
# CAUTION:
|
if command_exists curl; then
|
||||||
# This only works for generic package names, like neovim, or vim, or tmux etc..
|
curl -fsSL $url -o $import
|
||||||
# not every package packagemanager has the same packagenames for their packages..
|
elif command_exists wget; then
|
||||||
getImports() {
|
wget -o $import $url
|
||||||
local url="https://git.k4li.de/scripts/imports/raw/branch/main/distros.sh"
|
|
||||||
local import="$(mktemp)"
|
|
||||||
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"
|
|
||||||
sleep 0.2
|
|
||||||
rm "$import"
|
|
||||||
}
|
|
||||||
|
|
||||||
getDependencies() {
|
|
||||||
echo_info "Checking build dependencies.."
|
|
||||||
|
|
||||||
# INFO:
|
|
||||||
# ╭─────────────────────────────────────────────────────────────────────────╮
|
|
||||||
# │ You can define dependencies for various linux distros here. It will │
|
|
||||||
# │ automagically be pulled via the $pkgArray[$distro] variable │
|
|
||||||
# ╰─────────────────────────────────────────────────────────────────────────╯
|
|
||||||
generalDeps=(
|
|
||||||
"awk"
|
|
||||||
"7zip"
|
|
||||||
"bc"
|
|
||||||
"btop"
|
|
||||||
"curl"
|
|
||||||
"fzf"
|
|
||||||
"gawk"
|
|
||||||
"git"
|
|
||||||
"keychain"
|
|
||||||
"make"
|
|
||||||
"pv"
|
|
||||||
"ripgrep"
|
|
||||||
"rsync"
|
|
||||||
"stow"
|
|
||||||
"sudo"
|
|
||||||
"unzip"
|
|
||||||
"vi"
|
|
||||||
"zsh"
|
|
||||||
"zoxide"
|
|
||||||
)
|
|
||||||
|
|
||||||
generalBloat=(
|
|
||||||
"nano"
|
|
||||||
)
|
|
||||||
|
|
||||||
depsDebian=(
|
|
||||||
"eza"
|
|
||||||
)
|
|
||||||
|
|
||||||
depsFedora=()
|
|
||||||
depsOpensuse=()
|
|
||||||
depsArch=(
|
|
||||||
"tldr"
|
|
||||||
"oh-my-posh"
|
|
||||||
"eza"
|
|
||||||
"ytui-bin"
|
|
||||||
)
|
|
||||||
depsAlpine=()
|
|
||||||
|
|
||||||
declare -A deps=(
|
|
||||||
[debian]="depsDebian"
|
|
||||||
[ubuntu]="depsUbuntu"
|
|
||||||
[fedora]="depsFedora"
|
|
||||||
[arch]="depsArch"
|
|
||||||
[alpine]="depsAlpine"
|
|
||||||
[opensuse]="depsOpensuse"
|
|
||||||
)
|
|
||||||
|
|
||||||
# INFO:
|
|
||||||
# ╭────────────────────────────────────────────────────────────────╮
|
|
||||||
# │ This variable stores the packages you provided for each distro │
|
|
||||||
# ╰────────────────────────────────────────────────────────────────╯
|
|
||||||
declare -n pkgArray="${deps[$distro]}"
|
|
||||||
|
|
||||||
case "$distro" in
|
|
||||||
debian | ubuntu | arch | fedora | alpine | opensuse)
|
|
||||||
echo_info "Installing base packages.."
|
|
||||||
|
|
||||||
checkAndInstall "${generalDeps[@]}"
|
|
||||||
|
|
||||||
checkAndInstall "${pkgArray[@]}"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo_error "There are no dependencies to install for $distro"
|
|
||||||
return 69
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
removeBloat() {
|
|
||||||
if ! $arch; then
|
|
||||||
echo_info "Removing bloat.."
|
|
||||||
_remove "${generalBloat[@]}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
_nala() {
|
|
||||||
if command_exists nala; then
|
|
||||||
echo_info "Nala is already present, fetching mirros now!"
|
|
||||||
echo_warning "(This might take a minute or two, depending on your internet speed)"
|
|
||||||
$_sudo nala fetch --auto --assume-yes --https-only
|
|
||||||
else
|
|
||||||
echo_note "Nala is not installed on the system, do you want to install it now? (Y/n): "
|
|
||||||
read -r inst_nala </dev/tty
|
|
||||||
case "$inst_nala" in
|
|
||||||
N | n)
|
|
||||||
echo_warning "All right, continue without nala!"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo_note "Installing nala.."
|
|
||||||
$_sudo apt install nala --assume-yes &&
|
|
||||||
echo_info "Fetching best mirrors"
|
|
||||||
$_sudo nala fetch --auto --assume-yes --https-only
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
main() {
|
|
||||||
|
|
||||||
if $silent; then
|
|
||||||
echo_warning "Executing script silently!"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Getting general dependencies
|
|
||||||
if ! getDependencies; then
|
|
||||||
echo_error "Error when installing dependencies.."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# removing 'bloat'
|
|
||||||
if ! removeBloat; then
|
|
||||||
echo_error "Error when removing bloat.."
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$distro" in
|
|
||||||
debian)
|
|
||||||
# Path to sources.list
|
|
||||||
sources_file="/etc/apt/sources.list"
|
|
||||||
|
|
||||||
# Check if file exists
|
|
||||||
if [ -f "$sources_file" ]; then
|
|
||||||
# Comment out CD-ROM entries using sudo
|
|
||||||
$_sudo sed -i 's/^[[:space:]]*deb[[:space:]]\+cdrom:/#&/' "$sources_file"
|
|
||||||
echo_info "CD-ROM entries have been commented out in $sources_file"
|
|
||||||
else
|
else
|
||||||
if [ ! -f "/etc/apt/sources.d/sources.list" ]; then
|
echo "curl/wget is required, but missing.."
|
||||||
echo_error "Error: $sources_file not found"
|
exit 69
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
_nala
|
. "$import"
|
||||||
;;
|
sleep 0.1
|
||||||
esac
|
|
||||||
|
rm -f "$import"
|
||||||
|
}
|
||||||
|
|
||||||
|
ask-stuff() {
|
||||||
|
choose multiplexer "Select a multiplexer" tmux zellij </dev/tty
|
||||||
|
choose menu "Select a menu package" rofi wofi tofi </dev/tty
|
||||||
|
choose shell "Select a shell" zsh bash fish nushell </dev/tty
|
||||||
|
}
|
||||||
|
|
||||||
|
install-stuff() {
|
||||||
|
arr=(
|
||||||
|
firefox-bin
|
||||||
|
blender-bin
|
||||||
|
$package
|
||||||
|
)
|
||||||
|
|
||||||
|
# case "$distro" in
|
||||||
|
# arch)
|
||||||
|
# $_sudo pacman -Syu
|
||||||
|
# ;;
|
||||||
|
# esac
|
||||||
|
|
||||||
|
check-and-install ${arr[@]}
|
||||||
|
|
||||||
|
if confirm "Do you want to remove the previous installed packages?"; then
|
||||||
|
for pkg in "${arr[@]}"; do
|
||||||
|
pkg-remove $pkg
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
func1() {
|
||||||
|
spin yellow "installing stuff"
|
||||||
|
# if run install-stuff; then
|
||||||
|
if run --err err --out out git clone --depth=1 https://github.com/neovim/neovim.git; then
|
||||||
|
check "Installation complete"
|
||||||
|
line
|
||||||
|
pen "${out:-}"
|
||||||
|
else
|
||||||
|
throw "Installation failed!"
|
||||||
|
pen "${err:-}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
func2() {
|
||||||
|
# run --err install-stuff
|
||||||
|
if [ -d ./neovim ]; then
|
||||||
|
if confirm "$(pen bold blue 'Do you want to remove the cloned ./neovim directory?')" </dev/tty; then
|
||||||
|
rm -rf ./neovim/
|
||||||
|
else
|
||||||
|
pen red bold "Did not remove the neovim directory!"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
func3() {
|
||||||
|
local err
|
||||||
|
arr=(
|
||||||
|
firefox-esr
|
||||||
|
)
|
||||||
|
|
||||||
|
if $arch; then
|
||||||
|
spin blue "Installing.."
|
||||||
|
if run --err err checkAndInstall "${arr[@]}"; then
|
||||||
|
check "Installed $(pen red ${arr[*]})"
|
||||||
|
else
|
||||||
|
throw "Something went wrong installing ${arr[*]}.."
|
||||||
|
throw "${err:-}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
# if $silent; then
|
||||||
|
# echo_warning "Executing script silently!"
|
||||||
|
# fi
|
||||||
|
# func1
|
||||||
|
# func2
|
||||||
|
# func3
|
||||||
|
# if ask-stuff; then
|
||||||
|
choose package "What packages should also get installed? space separated list.."
|
||||||
|
if confirm "Do you want to 'install-stuff'?"; then
|
||||||
|
install-stuff
|
||||||
|
fi
|
||||||
|
# fi
|
||||||
|
|
||||||
|
# while install-stuff && break; do
|
||||||
|
# spin "Installing packages.."
|
||||||
|
# done
|
||||||
|
}
|
||||||
|
|
||||||
|
dream="https://git.k4li.de/scripts/imports/raw/branch/main/dream.sh"
|
||||||
|
if getImports "$dream"; then
|
||||||
|
|
||||||
|
main
|
||||||
|
fi
|
||||||
|
# fi
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# checkAUR() {
|
|
||||||
# if ! command_exists yay && ! command_exists paru; then
|
|
||||||
# return 69
|
|
||||||
# else
|
|
||||||
# return 0
|
|
||||||
# fi
|
|
||||||
# }
|
|
||||||
#
|
|
||||||
# if command_exists pacman; then
|
|
||||||
# if ! checkAUR; then
|
|
||||||
# paruTempDir="$(mktemp -d)"
|
|
||||||
# # if ! command_exists paru; then
|
|
||||||
# echo "${YELLOW}Installing paru as AUR helper...${NC}"
|
|
||||||
# $_sudo pacman -S --needed --noconfirm base-devel git
|
|
||||||
# cd /opt && $_sudo git clone https://aur.archlinux.org/paru-bin.git "$paruTempDir/paru" && $_sudo chown -R "$USER": "$paruTempDir/paru"
|
|
||||||
# cd "$paruTempDir/paru" && makepkg --noconfirm -si
|
|
||||||
# echo "${GREEN}Paru installed${NC}"
|
|
||||||
# # else
|
|
||||||
# # printf "%b\n" "${GREEN}Paru already installed${RC}"
|
|
||||||
# # fi
|
|
||||||
# fi
|
|
||||||
# fi
|
|
||||||
|
|
||||||
if getImports; then
|
|
||||||
# ─< package variable >───────────────────────────────────────────────────────────────────
|
|
||||||
unset PACKAGE
|
|
||||||
# ─< argument list variables >────────────────────────────────────────────────────────────
|
|
||||||
silent=false
|
|
||||||
|
|
||||||
PACKAGE=postinstallation
|
|
||||||
|
|
||||||
main
|
|
||||||
fi
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue