2
2
# Claire Guerin 2021-2024
3
3
# run as root / admin
4
4
5
+ # Default values
6
+ INSTALL_PATH=" "
7
+ NON_INTERACTIVE=false
8
+ CUSTOM_EXTENSIONS=" "
9
+ SKIP_SNAP=false
10
+ SKIP_BUILD=false
11
+ MINIMAL_INSTALL=false
12
+
13
+ # Parse command line arguments
14
+ while [ $# -gt 0 ]; do
15
+ case " $1 " in
16
+ --install-path)
17
+ INSTALL_PATH=" $2 "
18
+ shift 2
19
+ ;;
20
+ --yes)
21
+ NON_INTERACTIVE=true
22
+ shift
23
+ ;;
24
+ --extensions)
25
+ CUSTOM_EXTENSIONS=" $2 "
26
+ shift 2
27
+ ;;
28
+ --no-snap)
29
+ SKIP_SNAP=true
30
+ shift
31
+ ;;
32
+ --no-build)
33
+ SKIP_BUILD=true
34
+ shift
35
+ ;;
36
+ --minimal)
37
+ MINIMAL_INSTALL=true
38
+ SKIP_BUILD=true
39
+ shift
40
+ ;;
41
+ * )
42
+ echo " ❌ Unknown option: $1 "
43
+ exit 1
44
+ ;;
45
+ esac
46
+ done
47
+
5
48
# Enable debug mode if needed
6
49
if [ " $DEBUG " = " true" ]; then
7
50
set -x
@@ -55,16 +98,21 @@ detect_distro
55
98
# Install prerequisites
56
99
echo " 🔍 Detecting system: $DISTRO $VERSION "
57
100
sudo apt update || { echo " ❌ apt update failed" ; exit 1; }
58
- sudo apt install -y build-essential curl wget || { echo " ❌ Failed to install prerequisites" ; exit 1; }
59
-
60
- # Install snapd if not present
61
- if ! command_exists snap; then
62
- echo " 📦 Installing snapd..."
63
- sudo apt install -y snapd || { echo " ❌ Failed to install snapd" ; exit 1; }
64
- sudo systemctl enable snapd || true
65
- sudo systemctl start snapd || true
66
- # Wait for snapd service to be ready
67
- sleep 2
101
+ if [ " $SKIP_BUILD " = " false" ]; then
102
+ sudo apt install -y build-essential curl wget || { echo " ❌ Failed to install prerequisites" ; exit 1; }
103
+ else
104
+ sudo apt install -y curl wget || { echo " ❌ Failed to install prerequisites" ; exit 1; }
105
+ fi
106
+
107
+ # Install snapd if needed
108
+ if [ " $SKIP_SNAP " = " false" ]; then
109
+ if ! command_exists snap; then
110
+ echo " 📦 Installing snapd..."
111
+ sudo apt install -y snapd || { echo " ❌ Failed to install snapd" ; exit 1; }
112
+ sudo systemctl enable snapd || true
113
+ sudo systemctl start snapd || true
114
+ sleep 2
115
+ fi
68
116
fi
69
117
70
118
# Special handling for different distributions
@@ -85,11 +133,8 @@ case "$DISTRO" in
85
133
;;
86
134
esac
87
135
88
- # Install VS Code
89
- echo " 📥 Installing Visual Studio Code..."
90
- sudo snap install --classic code || {
91
- echo " ❌ Failed to install VS Code via snap. Trying alternative method..."
92
- # Fallback to .deb package
136
+ # Function to use .deb package for VS Code installation
137
+ use_deb_package () {
93
138
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
94
139
sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/
95
140
sudo sh -c ' echo "deb [arch=amd64,arm64,armhf signed-by=/etc/apt/trusted.gpg.d/packages.microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list'
@@ -98,15 +143,39 @@ sudo snap install --classic code || {
98
143
rm packages.microsoft.gpg
99
144
}
100
145
146
+ # Install VS Code
147
+ echo " 📥 Installing Visual Studio Code..."
148
+ if [ " $SKIP_SNAP " = " false" ]; then
149
+ sudo snap install --classic code || use_deb_package
150
+ else
151
+ use_deb_package
152
+ fi
153
+
101
154
# Verify VS Code installation
102
155
if ! command_exists code; then
103
156
echo " ❌ VS Code installation failed"
104
157
exit 1
105
158
fi
106
159
107
- # Install GitHub Copilot extensions
108
- echo " 🤖 Installing GitHub Copilot extensions..."
109
- code --install-extension GitHub.copilot || echo " ⚠️ Failed to install GitHub Copilot extension"
110
- code --install-extension GitHub.copilot-chat || echo " ⚠️ Failed to install GitHub Copilot Chat extension"
160
+ # Install extensions
161
+ if [ -n " $CUSTOM_EXTENSIONS " ]; then
162
+ echo " 🔧 Installing custom extensions..."
163
+ for ext in $CUSTOM_EXTENSIONS ; do
164
+ code --install-extension " $ext " || echo " ⚠️ Failed to install extension: $ext "
165
+ done
166
+ else
167
+ echo " 🤖 Installing GitHub Copilot extensions..."
168
+ code --install-extension GitHub.copilot || echo " ⚠️ Failed to install GitHub Copilot extension"
169
+ code --install-extension GitHub.copilot-chat || echo " ⚠️ Failed to install GitHub Copilot Chat extension"
170
+ fi
171
+
172
+ # Add custom installation path handling if specified
173
+ if [ -n " $INSTALL_PATH " ]; then
174
+ echo " 📁 Setting custom installation path: $INSTALL_PATH "
175
+ mkdir -p " $INSTALL_PATH "
176
+ if [ -d " /usr/share/code" ]; then
177
+ cp -r /usr/share/code/* " $INSTALL_PATH /"
178
+ fi
179
+ fi
111
180
112
181
echo " ✅ Installation complete! Please log out and log back in for all changes to take effect."
0 commit comments