feat: add hosts/ convention for centrally managed server .bashrc.local
- hosts/etqc-kenjim-11.bashrc.local: per-host local config for work server, managed from kenjim-mbp and deployed via 'dotfiles deploy-to'. Credentials replaced with CHANGEME placeholders — set real values on server after first deploy, never commit actual secrets. - dotfiles_manager.sh: deploy-to step 5 auto-detects hosts/<hostname>.bashrc.local and SCPs it to ~/.bashrc.local on the remote (with backup of existing file) - .gitignore: clarify that hosts/*.bashrc.local is intentionally tracked (existing .bashrc.local rule only matches the exact filename) - README.md: document hosts/ layout, workflow, and credential placeholder strategy
This commit is contained in:
@@ -1029,6 +1029,36 @@ cmd_deploy_to() {
|
||||
fi
|
||||
done < "$MANIFEST"
|
||||
|
||||
# ---- 5. Deploy hosts/<hostname>.bashrc.local → ~/.bashrc.local ----
|
||||
# Strip user@ prefix, then strip domain suffix to get short hostname
|
||||
local remote_short; remote_short="${target##*@}"
|
||||
remote_short="${remote_short%%.*}"
|
||||
local host_local="$DOTFILES_DIR/hosts/${remote_short}.bashrc.local"
|
||||
|
||||
if [ -f "$host_local" ]; then
|
||||
echo
|
||||
info "Found host-specific config: hosts/${remote_short}.bashrc.local"
|
||||
if $dry_run; then
|
||||
echo " [dry-run] hosts/${remote_short}.bashrc.local → ~/.bashrc.local"
|
||||
else
|
||||
# Back up existing remote .bashrc.local if not already captured above
|
||||
if $no_backup; then
|
||||
: # skip
|
||||
elif ssh "$target" '[ -f ~/.bashrc.local ]' 2>/dev/null; then
|
||||
local bl_backup="$HOME/.dotfiles_backup/remote-${remote_short}-$(date +%Y%m%d_%H%M%S)"
|
||||
mkdir -p "$bl_backup"
|
||||
scp -q "$target:~/.bashrc.local" "$bl_backup/.bashrc.local" 2>/dev/null || true
|
||||
info "Backed up remote ~/.bashrc.local → $bl_backup/.bashrc.local"
|
||||
fi
|
||||
scp -q "$host_local" "$target:~/.bashrc.local"
|
||||
success "Deployed: hosts/${remote_short}.bashrc.local → ~/.bashrc.local"
|
||||
(( deployed++ )) || true
|
||||
fi
|
||||
else
|
||||
info "No host-specific config found at hosts/${remote_short}.bashrc.local — skipping."
|
||||
info "Create one to manage ~/.bashrc.local centrally: dotfiles/hosts/${remote_short}.bashrc.local"
|
||||
fi
|
||||
|
||||
echo
|
||||
if $dry_run; then
|
||||
info "Dry run complete. Re-run without --dry-run to transfer files."
|
||||
|
||||
Reference in New Issue
Block a user