Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Update .stow-local-ignore with files in /home/user that would break running stow #196

Merged
merged 4 commits into from
Dec 13, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions universal/ubi9/entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,32 @@ mountpoint -q /home/user/; HOME_USER_MOUNTED=$?
STOW_COMPLETE=/home/user/.stow_completed

if [ $HOME_USER_MOUNTED -eq 0 ] && [ ! -f $STOW_COMPLETE ]; then
# There may be regular, non-symlink files in /home/user that match the
# pathing of files in /home/tooling. Stow will error out when it tries to
# stow on top of that. Instead, we can append to the current
# /home/tooling/.stow-local-ignore file to ignore pre-existing,
# non-symlinked files in /home/user that match those in /home/tooling before
# we run stow.
#
# Create two text files containing a sorted path-based list of files in
# /home/tooling and /home/user. Cut off "/home/user" and "/home/tooling" and
# only get the sub-paths so we can do a proper comparison
#
# In the case of /home/user, we want regular file types and not symbolic
# links.
find /home/user -type f -xtype f -print | sort | sed 's|/home/user||g' > /tmp/user.txt
find /home/tooling -print | sort | sed 's|/home/tooling||g' > /tmp/tooling.txt
# We compare the two files, trying to find files that exist in /home/user
# and /home/tooling. Being that the files that get flagged here are not
# already synlinks, we will want to ignore them.
IGNORE_FILES="$(comm -12 /tmp/user.txt /tmp/tooling.txt)"
# We no longer require the file lists, so remove them
rm /tmp/user.txt /tmp/tooling.txt
# For each file we need to ignore, append them to
# /home/tooling/.stow-local-ignore.
for f in $IGNORE_FILES; do echo "${f}" >> /home/tooling/.stow-local-ignore;done
# We are now ready to run stow
#
# Create symbolic links from /home/tooling/ -> /home/user/
stow . -t /home/user/ -d /home/tooling/ --no-folding -v 2 > /tmp/stow.log 2>&1
# Vim does not permit .viminfo to be a symbolic link for security reasons, so manually copy it
Expand Down
Loading