From 49f94bb424acc0c7e9391b7626947d291903924f Mon Sep 17 00:00:00 2001 From: Josh Lay Date: Tue, 18 Jun 2024 06:40:44 -0500 Subject: [PATCH] update.sh: init --- update.sh | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100755 update.sh diff --git a/update.sh b/update.sh new file mode 100755 index 0000000..c0f37cb --- /dev/null +++ b/update.sh @@ -0,0 +1,31 @@ +#!/bin/bash +# +# minimal dotfile manager +# tracks files / copies them into the repo, sorted by hostname +# + +# array of files [relative to home] to include +DOTS=( + '.vimrc' + '.config/nvim/init.vim' + '.config/nvim/coc-settings.json' + # '.config/sway' +) + +# ensure the host running this script/updating dotfiles has a directory +# ... then temporarily change into it for working, or exit. +# if it couldn't be made/entered [for whatever reason], we won't be able to copy. +[ -d "$HOSTNAME" ] || mkdir -v "$HOSTNAME" +pushd "$HOSTNAME" || exit + +# now that the host/working dir is managed, process the dotfiles +# ensure their directory structure is retained, then recursively copy +for DOT in "${DOTS[@]}"; do + DOT_DIR="$(dirname "$DOT")" + [ -d "$DOT_DIR" ] || mkdir -vp "$DOT_DIR" + # naively copy; rely on git to tell us about changes + cp -ravp "$HOME/$DOT" "$DOT" +done + +# return where we were +popd || exit