From dddad2b838d32f50e22802c47fc9613a85f5d05d Mon Sep 17 00:00:00 2001 From: raute Date: Thu, 30 Nov 2023 15:22:23 +0100 Subject: [PATCH] link.sh: Move away from GNU Stow. --- link.sh | 52 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 46 insertions(+), 6 deletions(-) diff --git a/link.sh b/link.sh index af3040e..181bca8 100755 --- a/link.sh +++ b/link.sh @@ -1,8 +1,48 @@ #!/bin/sh -stow --restow --target="$HOME/.config/alacritty" alacritty -stow --restow --target="$HOME/.config/fish" fish -stow --restow --target="$HOME/.config/flavours" flavours -stow --restow --target="$HOME/.config/newsboat" newsboat -stow --restow --target="$HOME/.config/nvim" nvim -stow --restow --target="$HOME/.config/tmux" tmux +link() { + src="$1" + dst="$2" + + if [ "$src" = "" ] || [ "$dst" = "" ]; then + echo "Source or destination parameter missing." >&2 + exit 2 + fi + + if [ ! -e "$src" ]; then + echo "Source file not found." >&2 + exit 3 + fi + + if [ -e "$dst" ] && [ ! -L "$dst" ]; then + echo "Destination exists and is not a symlink." >&2 + exit 4 + fi + + full_src=$(realpath -s "$src") + full_dst=$(realpath -s "$dst") + + if [ -L "$dst" ]; then + if [ "$full_dst" != "$full_src" ]; then + ln -s -f "$full_src" "$full_dst" + fi + else + ln -s "$full_src" "$full_dst" + fi +} + +cd "$(dirname "$(readlink -f "$0")")" || exit 1 + +link ./alacritty/alacritty.yml "$HOME/.config/alacritty/alacritty.yml" + +link ./fish/abbr.fish "$HOME/.config/fish/abbr.fish" +link ./fish/config.fish "$HOME/.config/fish/config.fish" + +link ./flavours/config.toml "$HOME/.config/flavours/config.toml" + +link ./newsboat/config "$HOME/.config/newsboat/config" + +link ./nvim/init.lua "$HOME/.config/nvim/init.lua" +link ./nvim/vim_plugins.sh "$HOME/scripts/vim_plugins.sh" + +link ./tmux/tmux.conf "$HOME/.tmux.conf"