Files
jbashrc/install.sh

43 lines
1.3 KiB
Bash
Raw Normal View History

2026-03-09 00:14:40 -04:00
#!/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