fish/functions/setup.fish
2024-05-26 20:11:11 +02:00

221 lines
12 KiB
Fish

# ╭────────────────────────────────────╮
# │ FUNCTION: packagemanager detection │
# ╰────────────────────────────────────╯
function upin
# ─< check for sudo/root >──────────────────────────────────────────────────────────────────
if [ $USER = "root" ]
set su ""
else
if command -v sudo >/dev/null 2>&1
set su "sudo"
end
end
# ─────────────────────────< START | distro/packagemanger detection >─────────────────────────
# ─< DNF - Fedora >─────────────────────────────────────────────────────
if command -v dnf
set pkg "$su dnf"
set install "$pkg install"
set update "$pkg update && $pkg upgrade"
set search "$pkg search"
set remove "$pkg remove"
set unattendet "$pkg install -y"
set -a ALIASES "-- You're using DNF aliases!! --"
end
# ─< APT/NALA - Debian >────────────────────────────────────────────────
if command -v nala >/dev/null 2>&1
set pkg "$su nala"
set install "$pkg update && $pkg install"
set update "$pkg update && $pkg upgrade"
set search "$pkg search"
set remove "$pkg remove"
set unattendet "$pkg install --assume-yes"
set ALIASES "-- You're using NALA aliases!! --"
else
if command -v apt-get >/dev/null 2>&1
set pkg "$su apt-get"
set install "$pkg update && $pkg install"
set update "$pkg update && $pkg upgrade"
set search "$pkg search"
set remove "$pkg remove"
set unattendet "$pkg install --assume-yes"
set ALIASES "-- You're using APT aliases!! --"
end
end
# ─< Pacman - Arch >────────────────────────────────────────────────────
if command -v paru >/dev/null 2>&1
set pkg "paru"
set install "$pkg -S"
set update "$pkg -Syu"
set search "$pkg -Ss"
set remove "$pkg -R"
set unattendet "$pkg install --noconfirm"
set ALIASES "-- You're using Arch!! - installed helper: paru --"
else
if command -v yay >/dev/null 2>&1
set pkg "yay"
set install "$pkg -S"
set update "$pkg -Syu"
set search "$pkg -Ss"
set remove "$pkg -R"
set unattendet "$pkg install --noconfirm"
set ALIASES "-- You're using Arch!! - installed helper: yay --"
else
if command -v pacman >/dev/null 2>&1
set pkg "$su pacman"
set install "$pkg -S"
set update "$pkg -Syu"
set search "$pkg -Ss"
set remove "$pkg -R"
set unattendet "$pkg install --noconfirm"
set ALIASES "-- by the PACMAN - You're using Arch!! --"
end
end
end
# ─< Zypper - OpenSuse >────────────────────────────────────────────────────────────────────
if command -v zypper >/dev/null 2>&1
set pkg "$su zypper"
set install "$pkg in"
set update "$pkg dup"
set search "$pkg se"
set remove "$pkg rm"
alias lock="$pkg al"
set ALIASES "-- I see.. you're using OpenSUSE. i like <3 --
-- ZYPPER -- "
end
# ─< APK - Alpine >─────────────────────────────────────────────────────────────────────────
if command -v apk >/dev/null 2>&1
set pkg "$su apk"
set install "$pkg add"
set update "$pkg update"
set search "$pkg search"
set ALIASES "-- Alpine.. right, this fast os is evolving.. --"
end
if set -q unattendet
set -U FISH_INSTALL $unattendet
else
set -U FISH_INSTALL $install
end
if test -n "$install"
set vars "install" "update" "search" "remove"
for env in $vars
if not test -z "$env"
alias "$env"="$$env"
end
end
end
end
# ╭──────────────────────────────────────────────────────────────────────────────────────────────────────╮
# │ FUNCTION: Define function gsa (to ask the user which submodule to clone to which path and which name │
# ╰──────────────────────────────────────────────────────────────────────────────────────────────────────╯
function gsa
set dir $PWD
echo "-- these are the current submodules --"
if command -v rg >/dev/null 2>&1
echo "-- for $dir --"
rg -i submodule (echo $dir/.gitmodules)
end
# ─< Prompt the user to enter the repository URL to add as a submodule >────────────────────
echo "-- enter the repository to add as a submodule --"
read repo
# ─< Prompt the user to enter the branch to checkout (e.g., main, master) >─────────────────
echo "-- enter the branch to checkout (main/master..) --"
read branch
# ─< Prompt the user to enter the relative path where the submodule will be cloned >────────
# ─< Advise not to use the leading / or ./ >────────────────────────────────────────────────
echo "-- enter the relative path, where the submodule will be cloned to. (!! do it like this: ./path/to/clone/to) --"
read -S path
echo "-- enter a name for the submodule --"
read -l name
# ─< Ask the user for confirmation if the constructed command looks correct >───────────────
echo "git submodule add --branch $branch $repo $path"
echo "-- does this command look right to you? [y/n] --"
read -l comm
# ─< Switch statement to handle the user's confirmation input >─────────────────────────────
switch $comm
# ─< If the user inputs 'y' or 'Y', execute the git submodule add command >─────────────────
case 'y' 'Y'
git submodule add --branch $branch --name $name $repo $path
git submodule update --init --recursive
git add .
git commit -m "Addet $name as a submodule"
git push
# ─< If the user inputs 'n' or 'N', notify them to try again >──────────────────────────────
case 'n' 'N'
echo "-- all right, just try again :) --"
end
end
# ╭───────────────────────────────────────────────────╮
# │ FUNCTION: set tmux command to always work with ta │
# ╰───────────────────────────────────────────────────╯
if command -v tmux >/dev/null 2>&1
function ta
command tmux list-sessions >/dev/null 2>&1
switch $status
case 0
echo "Tmux session found. Entering it now! --"
sleep 0.5
tmux a
case '*'
echo "No Tmux session found. Creating one now! --"
tmux
end
end
end
# ╭────────────────────────────────────────────╮
# │ FUNCTION: check fisher plugin dependencies │
# ╰────────────────────────────────────────────╯
function dep_fisher
if not set -q $_fishr_dep
# ─< Define dependencies for the plugins used by fisher >───────────────────────────────────
set dependencies "fzf" "btop" "fastfetch" "curl" "wget" "cmatrix"
# ─< Check and install dependencies >───────────────────────────────────────────────────────
while ! test -e ./.check
for dep in $dependencies
if not command -v $dep >/dev/null 2>&1
echo "Dependency $dep is not installed. Installing..."
if test -n "$FISH_INSTALL"
alias fish_install="$FISH_INSTALL"
fish_install $dep
else
echo "FISH_INSTALL is not defined: $FISH_INSTALL | Please install $dep manually."
return 1
end
end
end
end
set _fishr_dep
else
echo "Dependencies already installed!"
end
end
# ╭───────────────────────────────────────────────────────╮
# │ FUNCTION: check for fisher and install if not present │
# ╰───────────────────────────────────────────────────────╯
function check_fishr
if test ! -e $HOME/.config/fish/functions/fisher.fish && test ! -e $HOME/.config/fish/.fishr.init
echo "you did it!!"> $HOME/.config/fish/.fishr.init && curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source & fisher install jorgebucaran/fisher
end
end
# ────────────────────────────────────< setup some stuff >────────────────────────────────────
upin
dep_fisher
check_fishr