The previous deploy_one() did `mv $HOME/<dir> $BACKUP_DIR/<dir>` then `cp -a $YADR_DIR/<dir> $HOME/<dir>` for every entry in PERSONAL_DIRS. For dirs the repo only partially populates (notably .local — repo only tracks .local/bin/), this swept away unrelated user data: the most recent re-bootstrap moved ~/.local/share/fonts/ (Intel One Mono, Open Gorton, Roboto Mono, GALLAUDET, code128) into the timestamped backup, making them appear missing. Rework deploy logic: - deploy_file: copies one file/symlink, backing up only the conflicting destination (if any). Idempotent via paths_equivalent() so re-runs with no changes produce no output and no spurious backups. - deploy_dir: walks the repo's tree for that dir and deploys each leaf via deploy_file. Files in $HOME the repo doesn't know about are left untouched. Subdirs are mkdir'd as needed. Also: track the personal fonts at .local/share/fonts/ so they redeploy on every install, and run fc-cache -f at the end so apps see them without a logout/login. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6.9 KiB
Executable File
6.9 KiB
Executable File