files: show colliding files at bottom in checkLinkTargets

Prevents the actual file collision errors from being
truncated in the systemd log
This commit is contained in:
Lin Xianyi 2024-06-04 08:55:08 +08:00
parent 9b53a10f4c
commit b335cecd3e

View file

@ -34,26 +34,27 @@ for sourcePath in "$@" ; do
# Next, try to move the file to a backup location if configured and possible
backup="$targetPath.$HOME_MANAGER_BACKUP_EXT"
if [[ -e "$backup" ]]; then
errorEcho "Existing file '$backup' would be clobbered by backing up '$targetPath'"
collision=1
collisionErrors+=("Existing file '$backup' would be clobbered by backing up '$targetPath'")
else
warnEcho "Existing file '$targetPath' is in the way of '$sourcePath', will be moved to '$backup'"
fi
else
# Fail if nothing else works
errorEcho "Existing file '$targetPath' is in the way of '$sourcePath'"
collision=1
collisionErrors+=("Existing file '$backup' would be clobbered by backing up '$targetPath'")
fi
fi
done
if [[ -v collision ]] ; then
if [[ ${#collisionErrors[@]} -gt 0 ]] ; then
errorEcho "Please do one of the following:
- Move or remove the above files and try again.
- Move or remove the files below and try again.
- In standalone mode, use 'home-manager switch -b backup' to back up
files automatically.
- When used as a NixOS or nix-darwin module, set
'home-manager.backupFileExtension'
to, for example, 'backup' and rebuild."
for error in "${collisionErrors[@]}" ; do
errorEcho "$error"
done
exit 1
fi