@@ -15,6 +15,13 @@ if [ ! -d "${HOME}/.config/containers" ]; then
15
15
fi
16
16
fi
17
17
18
+ # Create Sym Link for Composer Keys in /home/tooling/.config
19
+ if [ -d /home/tooling/.config/composer ] && [ ! -d " ${HOME} /.config/composer" ]; then
20
+ mkdir -p ${HOME} /.config/composer
21
+ ln -s /home/tooling/.config/composer/keys.dev.pub ${HOME} /.config/composer/keys.dev.pub
22
+ ln -s /home/tooling/.config/composer/keys.tags.pub ${HOME} /.config/composer/keys.tags.pub
23
+ fi
24
+
18
25
# Setup $PS1 for a consistent and reasonable prompt
19
26
if [ -w " ${HOME} " ] && [ ! -f " ${HOME} " /.bashrc ]; then
20
27
echo " PS1='[\u@\h \W]\$ '" > " ${HOME} " /.bashrc
30
37
31
38
source kubedock_setup
32
39
40
+ #! /bin/bash
41
+
42
+ source kubedock_setup
43
+
44
+ # Stow
45
+ # # Required for https://github.com/eclipse/che/issues/22412
46
+
47
+ # /home/user/ will be mounted to by a PVC if persistUserHome is enabled
48
+ mountpoint -q /home/user/; HOME_USER_MOUNTED=$?
49
+
50
+ # This file will be created after stowing, to guard from executing stow everytime the container is started
51
+ STOW_COMPLETE=/home/user/.stow_completed
52
+
53
+ if [ $HOME_USER_MOUNTED -eq 0 ] && [ ! -f $STOW_COMPLETE ]; then
54
+ # There may be regular, non-symlink files in /home/user that match the
55
+ # pathing of files in /home/tooling. Stow will error out when it tries to
56
+ # stow on top of that. Instead, we can append to the current
57
+ # /home/tooling/.stow-local-ignore file to ignore pre-existing,
58
+ # non-symlinked files in /home/user that match those in /home/tooling before
59
+ # we run stow.
60
+ #
61
+ # Create two text files containing a sorted path-based list of files in
62
+ # /home/tooling and /home/user. Cut off "/home/user" and "/home/tooling" and
63
+ # only get the sub-paths so we can do a proper comparison
64
+ #
65
+ # In the case of /home/user, we want regular file types and not symbolic
66
+ # links.
67
+ find /home/user -type f -xtype f -print | sort | sed ' s|/home/user||g' > /tmp/user.txt
68
+ find /home/tooling -print | sort | sed ' s|/home/tooling||g' > /tmp/tooling.txt
69
+ # We compare the two files, trying to find files that exist in /home/user
70
+ # and /home/tooling. Being that the files that get flagged here are not
71
+ # already synlinks, we will want to ignore them.
72
+ IGNORE_FILES=" $( comm -12 /tmp/user.txt /tmp/tooling.txt) "
73
+ # We no longer require the file lists, so remove them
74
+ rm /tmp/user.txt /tmp/tooling.txt
75
+ # For each file we need to ignore, append them to
76
+ # /home/tooling/.stow-local-ignore.
77
+ for f in $IGNORE_FILES ; do echo " ${f} " >> /home/tooling/.stow-local-ignore; done
78
+ # We are now ready to run stow
79
+ #
80
+ # Create symbolic links from /home/tooling/ -> /home/user/
81
+ stow . -t /home/user/ -d /home/tooling/ --no-folding -v 2 > /tmp/stow.log 2>&1
82
+ # Vim does not permit .viminfo to be a symbolic link for security reasons, so manually copy it
83
+ cp /home/tooling/.viminfo /home/user/.viminfo
84
+ # We have to restore bash-related files back onto /home/user/ (since they will have been overwritten by the PVC)
85
+ # but we don't want them to be symbolic links (so that they persist on the PVC)
86
+ cp /home/tooling/.bashrc /home/user/.bashrc
87
+ cp /home/tooling/.bash_profile /home/user/.bash_profile
88
+ touch $STOW_COMPLETE
89
+ fi
90
+
33
91
exec " $@ "
0 commit comments