dot/update.sh

34 lines
1.2 KiB
Bash
Raw Normal View History

2024-06-18 11:40:44 +00:00
#!/bin/bash
#
# minimal dotfile manager
# tracks files / copies them into the repo, sorted by hostname
#
2024-06-18 13:41:09 +00:00
# note: assumes pwd is this repo before running this script
2024-06-18 13:28:13 +00:00
set -u
2024-06-18 11:40:44 +00:00
# array of files [relative to home] to include
DOTS=(
'.vimrc'
'.config/nvim/init.vim'
'.config/nvim/coc-settings.json'
2024-06-18 13:28:13 +00:00
'.config/autostart-i3ipc.yml'
'.config/sway'
2024-06-18 11:40:44 +00:00
)
2024-06-19 11:23:55 +00:00
# to avoid hacky pwd/dirname stuff w/ $0 [for now?], inline the path to the repo where copies are held
DOT_DIR="${HOME}/git/dot"
2024-06-18 11:40:44 +00:00
# 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"
2024-06-18 13:28:13 +00:00
2024-06-18 11:40:44 +00:00
# now that the host/working dir is managed, process the dotfiles
2024-06-19 11:23:55 +00:00
# ensure their directory structure is retained, naively copy w/ rsync - relying on Git to tell us about changes
# TODO: reconsider, edge cases?
2024-06-18 11:40:44 +00:00
for DOT in "${DOTS[@]}"; do
2024-06-19 11:23:55 +00:00
DEST="${DOT_DIR}/${HOSTNAME}/$DOT"
echo "Copying '$HOME/$DOT' to '$DEST'"
rsync -aqv "$HOME/$DOT" "$DEST" || echo "Couldn't copy '$DOT', got rc: $?"
2024-06-18 11:40:44 +00:00
done