From 3a0f03caa63634728b645704325f77ca5c57db83 Mon Sep 17 00:00:00 2001 From: PieckA Date: Sat, 25 May 2024 15:45:31 +0200 Subject: [PATCH] changed fisher config --- config.fish | 11 ++- functions/setup.fish | 223 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 230 insertions(+), 4 deletions(-) create mode 100644 functions/setup.fish diff --git a/config.fish b/config.fish index feb55d2..8d6798c 100644 --- a/config.fish +++ b/config.fish @@ -10,14 +10,17 @@ end # ╰───────────────────────────────────────────────────╯ # ────────────────────────────────────────< sources >────────────────────────────────────── -# source $HOME/.config/fish/functions/tmux.fish -source $HOME/.config/fish/functions/c_fisher.fish -source $HOME/.config/fish/functions/dep_fisher.fish +source ./functions/setup.fish # ─────────────────────────────────< Environment-Variables >─────────────────────────────── set -p EDITOR (which nvim) -upin && set_alias +upin +set_alias +dep_fisher +check_fisher +plugs_fisher + # ─< colorized ls >───────────────────────────────────────────────────────────────────────── # ─< lsd >────────────────────────────────────────────────────────────────────────────────── diff --git a/functions/setup.fish b/functions/setup.fish new file mode 100644 index 0000000..a6657ac --- /dev/null +++ b/functions/setup.fish @@ -0,0 +1,223 @@ +# ╭────────────────────────────────────╮ +# │ FUNCTION: packagemanager detection │ +# ╰────────────────────────────────────╯ +function upin + +# ─< check for sudo/root >────────────────────────────────────────────────────────────────── +if [ $USER = "root" ] + set sudo "" +else + if command -v sudo >/dev/null 2>&1 + set sudo "sudo" + end +end + +# ─────────────────────────< START | distro/packagemanger detection >───────────────────────── +# ─< DNF - Fedora >───────────────────────────────────────────────────── +if command -v dnf + set pkg "$sudo dnf" + set install "$pkg install" + set update "$pkg update && $pkg upgrade" + set search "$pkg search" + set remove "$pkg remove" + set -a ALIASSES "-- You're using DNF aliases!! --" +end + +# ─< APT/NALA - Debian >──────────────────────────────────────────────── +if command -v nala >/dev/null 2>&1 + set pkg "$sudo nala" + set install "$pkg update && $pkg install" + set update "$pkg update && $pkg upgrade" + set search "$pkg search" + set remove "$pkg remove" + set ALIASSES "-- You're using NALA aliases!! --" + else +if command -v apt-get >/dsudo ev/null 2>&1 + set pkg "$sudo apt-get" + set install "$pkg update && $pkg install" + set update "$pkg update && $pkg upgrade" + set search "$pkg search" + set remove "$pkg remove" + set ALIASSES "-- 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 ALIASSES "-- 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 ALIASSES "-- You're using Arch!! - installed helper: yay --" +else + if command -v pacman >/dev/null 2>&1 + set pkg "$sudo pacman" + set install "$pkg -S" + set update "$pkg -Syu" + set search "$pkg -Ss" + set remove "$pkg -R" + set ALIASSES "-- by the PACMAN - You're using Arch!! --" +end +end +end + +# ─< Zypper - OpenSuse >──────────────────────────────────────────────────────────────────── +if command -v zypper >/dev/null 2>&1 + set pkg "$sudo zypper" + set install "$pkg in" + set update "$pkg dup" + set search "$pkg se" + set remove "$pkg rm" + alias lock="$pkg al" + set ALIASSES "-- I see.. you're using OpenSUSE. i like <3 -- +-- ZYPPER -- " +end + +# ─< APK - Alpine >───────────────────────────────────────────────────────────────────────── +if command -v apk >/dev/null 2>&1 + set pkg "$sudo apk" + set install "$pkg add" + set update "$pkg update" + set search "$pkg search" + set ALIASSES "-- Alpine.. right, this fast os is evolving.. --" +end +end + +if test -n "$install" +set FISH_INSTALL "$install" +end + +# ╭───────────────────────────────────────────────╮ +# │ FUNCTION: alias detection || depends on: upin │ +# ╰───────────────────────────────────────────────╯ +function set_alias +# ─< set variables to aliasses >──────────────────────────────────────────────────────────── + if upin + 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 + if command tmux list-sessions >/dev/null 2>&1 + echo "Tmux session found. Entering it now! --" + sleep 0.5 + tmux a + else + echo "No Tmux session found. Creating one now! --" + tmux + end +end +end + +# ╭────────────────────────────────────────────╮ +# │ FUNCTION: check fisher plugin dependencies │ +# ╰────────────────────────────────────────────╯ +function dep_fisher + # Define dependencies for the plugins used by fisher + set dependencies "fzf" + + # Check and install dependencies + 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" + $FISH_INSTALL $dep + else + echo "FISH_INSTALL is not defined: $FISH_INSTALL | Please install $dep manually." + end + end + end +end + +# ╭───────────────────────────────────────────────────────╮ +# │ FUNCTION: check for fisher and install if not present │ +# ╰───────────────────────────────────────────────────────╯ +function check_fisher + if not test -e $HOME/.config/fish/functions/fisher.fish + curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source + end +end +# ╭──────────────────────────────────╮ +# │ FUNCTION: install fisher plugins │ +# ╰──────────────────────────────────╯ +function plugs_fisher + # Define plugins to use with fisher + set plugins "PatrickF1/fzf.fish" "jorgebucaran/autopair.fish" + + # Loop for plugin installation/update + for plugin in $plugins + if fisher list | grep -q (basename $plugin) + fisher update $plugin + echo "Updated $plugin" + else + fisher install $plugin + echo "Installed $plugin" + end + end +end