.dotfiles/.bin/.e
2024-06-24 15:25:15 +02:00

91 lines
2.6 KiB
Bash
Executable file

#!/usr/bin/env bash
declare -A mapper=(
[".e"]="$HOME/.bin/.e"
[".t"]="$HOME/.bin/.t"
["alacritty"]="$HOME/.config/alacritty/alacritty.toml"
["autoinstall.conf"]="$HOME/.config/autoinstall.conf"
["autostart.toml"]="$HOME/.config/autostart.toml"
["backup"]="$HOME/.bin/host-backup-$(cat /proc/sys/kernel/hostname)"
["bash"]="$HOME/.bashrc"
["bspwm"]="$HOME/.config/bspwm/bspwmrc"
["completions"]="$HOME/.config/completionsrc"
["env"]="$HOME/.config/environment"
["env.d"]="$HOME/.config/env.d/"
["git"]="$HOME/.config/git/config"
["git-ignore"]="$HOME/.config/git/ignore"
["git-credentials"]="$HOME/.config/git/credentials"
["home-manager"]="$HOME/.config/home-manager/home.nix"
["host-mode"]="$HOME/.bin/host-mode"
["hyprland"]="$HOME/.config/hypr/hyprland.conf"
["nvim"]="$HOME/.config/astronvim/lua/user/"
["polybar"]="$HOME/.config/polybar"
["qutebrowser"]="$HOME/.config/qutebrowser/config.py"
["qutebrowser-kiosk"]="$HOME/.config/qutebrowser/config_kiosk.py"
["rclone"]="$HOME/.config/rclone/rclone.conf"
["ssh"]="$HOME/.ssh/config"
["starship"]="$HOME/.config/starship.toml"
["sxhkd"]="$HOME/.config/sxhkd/sxhkdrc"
["vim"]="$HOME/.config/vim/vimrc"
["wakatime"]="$HOME/.config/wakatime/.wakatime.cfg##template"
["waybar"]="$HOME/.config/waybar/"
["xprofile"]="$HOME/.xprofile"
["yadm"]="$HOME/.local/share/yadm/repo.git/config"
["yadm-encrypt"]="$HOME/.config/yadm/encrypt"
["zellij"]="$HOME/.config/zellij/"
["zsh"]="$HOME/.config/zsh/.zshrc"
)
declare -A directory=(
["bspwm"]="$HOME/.config/bspwm/"
["env.d"]="$HOME/.config/env.d/"
["home-manager"]="$HOME/.config/home-manager/"
["hyprland"]="$HOME/.config/hypr/"
["nvim"]="$HOME/.config/astronvim/lua/user/"
["polybar"]="$HOME/.config/polybar/"
["qutebrowser"]="$HOME/.config/qutebrowser/"
["waybar"]="$HOME/.config/waybar/"
["zsh"]="$HOME/.config/zsh/"
)
declare -A hooks=(
["qutebrowser"]="qutebrowser :config-source"
["qutebrowser-kiosk"]="qutebrowser-kiosk :config-source" # broken due to qutebrowser-kiosk being an alias
["waybar"]="killall -SIGUSR2 waybar"
["yadm"]="yadm alt"
)
if [ -z "$1" ]
then
echo "No argument given. Use --list (-l) to show all options."
exit 1
fi
if [ "$1" = "-l" ] || [ "$1" = "--list" ]
then
echo "${!mapper[@]}"
exit 0
fi
target="${mapper["$1"]}"
if [ -z "$target" ]
then
echo "Dotfile not found. Use --list (-l) to show all options."
exit 1
fi
working_dir="${directory["$1"]}"
if [ -n "$working_dir" ]
then
# shellcheck disable=SC2164
cd "$working_dir"
fi
$EDITOR "$target"
hook="${hooks["$1"]}"
if [ -n "$hook" ]
then
echo "Running hook: $hook"
eval "$hook"
fi