From 3ca6551ce19d24a5fdc5837ea45cd6f0012cf45c Mon Sep 17 00:00:00 2001 From: pika Date: Mon, 2 Jun 2025 21:06:00 +0200 Subject: [PATCH] dotfile setup help --- dotfiles.sh | 121 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 dotfiles.sh diff --git a/dotfiles.sh b/dotfiles.sh new file mode 100644 index 0000000..5d79f28 --- /dev/null +++ b/dotfiles.sh @@ -0,0 +1,121 @@ +{ + #!/usr/bin/env bash + + creds=false + # ─< Check if the given command exists silently >───────────────────────────────────────── + command_exists() { + command -v "$@" >/dev/null 2>&1 + } + + getImports() { + local url="$1" + 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" + + echo "${BLUE}Sourcing external script:${NC} $url" + sleep 0.1 + rm -f "$import" + } + + setup-env() { + # WHY: + # This import will give you the following variables: + # _sudo="sudo -E" <- only if non root user + # distro = + # arch = bool + # fedora = bool + # opensuse = bool.... + # You can then use it for, `if $arch; then` + # Also this gives you the _install command, which installs a package pased on the packagemanager/distro used. + # + # CAUTION: + # This only wokrs for generic package names, like neovim, or vim, or tmux etc.. + # not every package packagemanager has the same packagenames for their packages.. + # + # local beddu=https://git.k4li.de/scripts/beddu/raw/branch/main/dist/beddu.sh + # local pika=https://git.k4li.de/scripts/imports/raw/branch/main/distros.sh + # dream ~= combined beddu and pika + local dream=https://git.k4li.de/scripts/imports/raw/branch/main/dream.sh + + if ! command_exists pkg-install && ! command_exists check-and-install && ! command_exists pen; then + getImports $dream + fi + + for pkg in git grep; do + if ! command_exists $pkg; then + pen bold yellow "Installing $pkg for you.." + pkg-install $pkg + fi + done + + if [ -f "$HOME/.git-credentials" ]; then + if grep -q -i 'git.k4li.de' "$HOME/.git-credentials"; then + creds=true + else + creds=false + fi + else + creds=false + fi + } + + clone-repo-to() { + local repo="$1" + local path="$2" + local url="https://git.k4li.de" + + if [ ! -d "$path" ]; then + git clone --depth=1 --recursive "${url}/${repo}" "${path}" + else + if confirm "The path $path is already present! Do you want to move it now to $HOME/.bak?"