56 lines
1.2 KiB
Bash
Executable File
56 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
OLD_PWD=$PWD
|
|
timestamp=$(date '+%m%d%Y%H%M')
|
|
|
|
function finish {
|
|
cd "$OLD_PWD" || exit;
|
|
}
|
|
|
|
trap finish EXIT
|
|
|
|
function overlay {
|
|
local source="$1"
|
|
local prefix="$2"
|
|
|
|
cd "$source" || exit;
|
|
|
|
find . -maxdepth 1 -type f -printf "%f\0" | while IFS= read -r -d $'\0' P; do
|
|
local target="${prefix}/${P}"
|
|
local backup="${prefix}/${P}.orig.${timestamp}"
|
|
# echo "$PWD/$P" "->" "$target"
|
|
|
|
# skip existing links
|
|
if [ -h "$target" ]; then continue; fi
|
|
|
|
|
|
# move existing dir out of the way
|
|
if [ -e "$target" ]; then
|
|
if [ -e "$backup" ]; then
|
|
echo "want to override $target but backup exists"
|
|
continue;
|
|
fi
|
|
|
|
echo -n "Backup ${P}"
|
|
mv -v "$target" "$backup"
|
|
fi
|
|
|
|
# create link
|
|
ln -v -s "$PWD/$P" "$target"
|
|
|
|
# ensure permissions
|
|
chmod -R o-rwx,g-rwx "$target"
|
|
done
|
|
|
|
}
|
|
|
|
# From aaronjensen/dotfiles
|
|
DOTFILES=$( cd "$(dirname "${BASH_SOURCE[0]}")" && pwd || return)
|
|
|
|
overlay "$DOTFILES/dotfiles" "$HOME"
|
|
overlay "$DOTFILES/dotfiles/.config" "$HOME/.config"
|
|
|
|
# shellcheck source=/dev/null
|
|
for f in "$DOTFILES/setup.d/"*.sh; do source "$f"; done
|
|
unset f;
|