feat: add install script
This commit is contained in:
parent
ff72fe0240
commit
a5323d3226
|
|
@ -8,3 +8,10 @@ Clone:
|
||||||
```
|
```
|
||||||
git clone https://git.nanikore.de/compaqdisc/dotfiles.git ~/.dotfiles
|
git clone https://git.nanikore.de/compaqdisc/dotfiles.git ~/.dotfiles
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Install:
|
||||||
|
```
|
||||||
|
~/.dotfiles/install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
The install script symlinks to the shared directory and backs up original files.
|
||||||
|
|
|
||||||
38
install.sh
Executable file
38
install.sh
Executable file
|
|
@ -0,0 +1,38 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
DOTFILES="${DOTFILES:-$HOME/.dotfiles}"
|
||||||
|
|
||||||
|
link_file() {
|
||||||
|
local src="$1"
|
||||||
|
local dst="$2"
|
||||||
|
|
||||||
|
if [[ ! -e "$src" ]]; then
|
||||||
|
echo "missing source: $src"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -L "$dst" && "$(readlink "$dst")" == "$src" ]]; then
|
||||||
|
echo "ok: $dst -> $src"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -e "$dst" || -L "$dst" ]]; then
|
||||||
|
printf "replace %s? [y/N] " "$dst"
|
||||||
|
read -r answer
|
||||||
|
|
||||||
|
case "$answer" in
|
||||||
|
y|Y|yes|YES)
|
||||||
|
mv "$dst" "$dst.bak.$(date +%Y%m%d%H%M%S)"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "skip: $dst"
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "$(dirname "$dst")"
|
||||||
|
ln -s "$src" "$dst"
|
||||||
|
echo "linked: $dst -> $src"
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue