22
33set -e
44
5+ FEATURE_DIR=" /usr/local/share/stuartleeks-devcontainer-features/azure-cli-persistence"
6+ LOG_FILE=" $FEATURE_DIR /log.txt"
7+
8+ log () {
9+ echo " $1 "
10+ echo " $1 " >> " $LOG_FILE "
11+ }
12+
13+ if command -v sudo > /dev/null; then
14+ sudo chown -R " $( id -u) :$( id -g) " " $LOG_FILE "
15+ else
16+ chown -R " $( id -u) :$( id -g) " " $LOG_FILE "
17+ fi
18+
19+ log " In OnCreate script"
20+
521fix_permissions () {
622 local dir
723 dir=" ${1} "
@@ -16,3 +32,61 @@ fix_permissions() {
1632}
1733
1834fix_permissions " /dc/azure"
35+
36+ # Fix up the cliextensions folder in case the user had an old .azure folder
37+ # that had extensions installed in it (e.g. using the azure-cli feature and specifying extensions to install)
38+
39+ if [ -d " $HOME /.azure-old" ]; then
40+ got_old_azure_folder=true
41+ else
42+ got_old_azure_folder=false
43+ fi
44+
45+
46+ old_cliextensions_folder=" $HOME /.azure-old/cliextensions"
47+ new_cliextensions_folder=" $HOME /.azure/cliextensions"
48+ new_cliextensions_folder_parent=" $HOME /.azure"
49+
50+ got_old_extensions_folder=false
51+
52+ if [ " $got_old_azure_folder " = true ]; then
53+ if [ -d " $old_cliextensions_folder " ]; then
54+ got_old_extensions_folder=true
55+ log " cliextensions folder found in old .azure folder"
56+ if [ -d " $new_cliextensions_folder " ]; then
57+ if [ -L " $new_cliextensions_folder " ]; then
58+ symlink_target=$( readlink " $new_cliextensions_folder " )
59+ if [ " $symlink_target " = " $old_cliextensions_folder " ]; then
60+ log " cliextensions folder ('$new_cliextensions_folder ') already symlinked to '$old_cliextensions_folder ' - no action needed"
61+ else
62+ log " cliextensions folder ('$new_cliextensions_folder ') is a symlink, but points to a different location ('$symlink_target ')"
63+ exit 1
64+ fi
65+ else
66+ log " cliextensions folder ('$new_cliextensions_folder ') already exists in but is not a symlink"
67+ exit 1
68+ fi
69+ else
70+ log " cliextensions folder ('$new_cliextensions_folder ') does not exist - creating symlink to '$old_cliextensions_folder '"
71+ if command -v sudo > /dev/null; then
72+ sudo ln -s " $old_cliextensions_folder " " $new_cliextensions_folder_parent "
73+ else
74+ ln -s " $old_cliextensions_folder " " $new_cliextensions_folder_parent "
75+ fi
76+ fi
77+ fi
78+ fi
79+
80+ # If we haven't got an old .azure folder with a cliextensions folder in it, check if the new cliextensions folder is a symlink to the old one
81+ # And if so, remove the symlink
82+ # This can happen if the user has installed the azure-cli feature and specified extensions to install
83+ # and then later removed the extensions.
84+ if [ " $got_old_extensions_folder " = false ]; then
85+ if [ -L " $new_cliextensions_folder " ]; then
86+ symlink_target=$( readlink " $new_cliextensions_folder " )
87+ if [ " $symlink_target " = " $old_cliextensions_folder " ]; then
88+ log " cliextensions folder ('$new_cliextensions_folder ') is a symlink to '$old_cliextensions_folder ' - removing symlink"
89+ rm " $new_cliextensions_folder "
90+ fi
91+ fi
92+ fi
0 commit comments