#!/bin/bash
# (@) $Header: /usr/groups/linux/local-homedir-working/RCS/cl-xdg-user-dirs-move,v 1.2 2022/09/13 17:15:38 pb22 Exp $

USER_DIRS_DEF=~/.config/user-dirs.dirs

[ ! -e $USER_DIRS_DEF ] && exit 1

# bail out immediately if the homedir is NFS
case $(stat -f -c %T ~) in
	nfs*)
		echo "$0: homedir is NFS; doing nothing" >&2
		exit 0
		;;
esac

egrep '^XDG_[^=]+_DIR=' $USER_DIRS_DEF | sed 's/^XDG_//;s/_DIR=.*//' | while read var
do
	case $var in
		DOWNLOAD|DESKTOP)
			# deliberately leave local
			echo "$0: $var: skipping" >&2
			continue
			;;
	esac

	dir=$(xdg-user-dir $var)

	case $dir in
		$HOME)
			echo "$0: $var: is set to homedir; skipping" >&2
			continue
			;;
		$HOME*)
			;;
		*)
			echo "$0: $var: $dir is already outside of homedir $HOME; skipping" >&2
			continue
			;;
	esac

	if [ -L $dir ]
	then
		echo "$0: $var: $dir is a symlink; skipping" >&2
		continue
	fi

	if [ -e $dir ] && ! rmdir $dir
	then
		echo "$0: $var: could not rmdir $dir (non-empty?); skipping" >&2
		continue
	fi

	target=/homes/$USER/$(basename $dir)
	echo "$0: $var: relocating from $dir to $target" >&2

	mkdir -p $target
	ln -s $target $dir
	xdg-user-dirs-update --set $var $target
done
