From b64509498d740f268c775164980a6cdf0d999e15 Mon Sep 17 00:00:00 2001 From: Thies Lennart Alff Date: Mon, 30 Aug 2021 10:38:41 +0200 Subject: [PATCH] automatic creation of links --- .gitignore | 1 + create_links.sh | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 .gitignore create mode 100755 create_links.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e384660 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/backup diff --git a/create_links.sh b/create_links.sh new file mode 100755 index 0000000..c71e90f --- /dev/null +++ b/create_links.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash + +FILE_PATH=$(readlink -f "$0") +REPO_DIR=$(dirname "$FILE_PATH") +BACKUP_DIR="$REPO_DIR/backup" +mkdir -p "$BACKUP_DIR" +FILE_DST=("$HOME/.zshrc" "$HOME/.vimrc" "$HOME/.gitconfig") + +for f_out in "${FILE_DST[@]}" +do + FNAME="$(basename -- $f_out)" + F_SRC="$REPO_DIR/$FNAME" + if [ -f $f_out ] && [ ! -L "$f_out" ]; then + echo "Replacing '$f_out' with symlink." + i=0 + F_BACKUP_BASE="$BACKUP_DIR/$FNAME" + F_BACKUP=$F_BACKUP_BASE + while [ -e "$F_BACKUP" ]; do + printf -v F_BACKUP '%s.backup%04d' "$F_BACKUP_BASE" "$(( i++ ))" + done + echo "Moving '$f_out' to '$F_BACKUP'" + mv "$f_out" "$F_BACKUP" + ln -sv "$F_SRC" "$f_out" + else + echo "$f_out does not exist as regular file." + if [ -e "$f_out" ]; then + echo "There is already a symlink for $f_out. Skipping..." + else + ln -sv "$F_SRC" "$f_out" + fi + fi +done