Initial commit
This commit is contained in:
42
install.sh
Executable file
42
install.sh
Executable file
@@ -0,0 +1,42 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Installs config files from this repo by creating symlinks.
|
||||
# On first run, backs up originals to ~/.orig-config.
|
||||
#
|
||||
|
||||
REPO_DIR="$HOME/jbashrc"
|
||||
|
||||
# The list of config files: "repo-relative-path:absolute-target"
|
||||
FILES=(
|
||||
"bash/dot-bashrc:$HOME/.bashrc"
|
||||
"bash/dot-profile:$HOME/.profile"
|
||||
"claude/CLAUDE.md:$HOME/.claude/CLAUDE.md"
|
||||
"claude/settings.json:$HOME/.claude/settings.json"
|
||||
"emacs/dot-emacs:$HOME/.emacs"
|
||||
"git/dot-gitconfig:$HOME/.gitconfig"
|
||||
"vscode/chatLanguageModels.json:$HOME/.config/Code/User/chatLanguageModels.json"
|
||||
"vscode/keybindings.json:$HOME/.config/Code/User/keybindings.json"
|
||||
"vscode/settings.json:$HOME/.config/Code/User/settings.json"
|
||||
)
|
||||
|
||||
# Back up originals that haven't been backed up yet.
|
||||
mkdir -p "$HOME/.orig-config"
|
||||
for entry in "${FILES[@]}"; do
|
||||
src_rel="${entry%%:*}"
|
||||
target="${entry#*:}"
|
||||
backup="$HOME/.orig-config/$src_rel"
|
||||
if [ ! -e "$backup" ] && [ -e "$target" ] && [ ! -L "$target" ]; then
|
||||
mkdir -p "$(dirname "$backup")"
|
||||
cp "$target" "$backup"
|
||||
echo "Backed up $target"
|
||||
fi
|
||||
done
|
||||
|
||||
# Create symlinks.
|
||||
for entry in "${FILES[@]}"; do
|
||||
src="$REPO_DIR/${entry%%:*}"
|
||||
target="${entry#*:}"
|
||||
mkdir -p "$(dirname "$target")"
|
||||
ln -sf "$src" "$target"
|
||||
echo "Linked $target -> $src"
|
||||
done
|
||||
Reference in New Issue
Block a user