adds vscode extensions support
Signed-off-by: Menno van Leeuwen <menno@vleeuwen.me>
This commit is contained in:
@@ -5,4 +5,7 @@ source ~/dotfiles/bin/helpers/functions.sh
|
||||
printfe "%s\n" "cyan" "Exporting Gnome Terminal preferences"
|
||||
dconf dump /org/gnome/terminal/ > ~/dotfiles/config/gterminal.preferences
|
||||
|
||||
printfe "%s\n" "cyan" "Exporting VSCode extensions"
|
||||
code --list-extensions | jq -R -s -c 'split("\n")[:-1]' > ~/dotfiles/vscode/extensions.json
|
||||
|
||||
printfe "%s\n" "green" "Finished, don't forget to commit and push"
|
@@ -1,4 +1,61 @@
|
||||
#!/usr/bin/env zsh
|
||||
|
||||
source ~/dotfiles/bin/helpers/functions.sh
|
||||
source ~/dotfiles/bin/helpers/packages.sh
|
||||
source ~/dotfiles/bin/helpers/vscode-extensions.sh
|
||||
|
||||
# Check if parameter --verbose was passed
|
||||
if [ "$2" = "--verbose" ]; then
|
||||
verbose=true
|
||||
else
|
||||
verbose=false
|
||||
fi
|
||||
|
||||
# count entries in packages
|
||||
count=$(echo $packages | wc -w)
|
||||
installed=0
|
||||
|
||||
for package in $packages; do
|
||||
pkg_status=$(dpkg -s $package 2> /dev/null | grep "Status" | cut -d " " -f 4)
|
||||
|
||||
if [ "$pkg_status" = "installed" ]; then
|
||||
installed=$((installed + 1))
|
||||
else
|
||||
if [ "$verbose" = true ]; then
|
||||
printfe "%s\n" "red" "$package is not installed"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
printfe "%s\n" "cyan" "APT $installed/$count packages installed"
|
||||
|
||||
|
||||
load_vscode_extensions
|
||||
count_installed_extensions=0
|
||||
|
||||
# Loop through each extension and check if it's installed
|
||||
for extension in "${extensionList[@]}"; do
|
||||
result=$(code --list-extensions | grep -E "^${extension}$")
|
||||
if [ -z "$result" ]; then
|
||||
if [ "$verbose" = true ]; then
|
||||
printfe "%s" "yellow" "Extension $extension is not installed\n"
|
||||
fi
|
||||
else
|
||||
count_installed_extensions=$((count_installed_extensions + 1))
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$verbose" = true ]; then
|
||||
printfe "%s\n" "yellow" "Expected extensions:"
|
||||
for ext in "${extensionList[@]}"; do
|
||||
printfe "%s\n" "blue" "$ext"
|
||||
done
|
||||
|
||||
printfe "%s\n" "yellow" "Installed extensions:"
|
||||
while IFS= read -r installed_ext; do
|
||||
printfe "%s\n" "blue" "$installed_ext"
|
||||
done < <(code --list-extensions)
|
||||
fi
|
||||
|
||||
total_extensions=${#extensionList[@]}
|
||||
printfe "%s\n" "cyan" "VSCode $count_installed_extensions/$total_extensions extensions installed"
|
||||
|
@@ -19,6 +19,10 @@ printfe "%s\n" "cyan" "Ensuring packages are installed..."
|
||||
source ~/dotfiles/bin/helpers/packages.sh
|
||||
ensure_packages_installed
|
||||
|
||||
printfe "%s\n" "cyan" "Ensuring VSCode extensions are installed..."
|
||||
source ~/dotfiles/bin/helpers/vscode-extensions.sh
|
||||
ensure_vscode_extensions_installed
|
||||
|
||||
printfe "%s\n" "cyan" "Importing Gnome Terminal preferences..."
|
||||
cat ~/dotfiles/config/gterminal.preferences | dconf load /org/gnome/terminal/legacy/profiles:/
|
||||
|
||||
|
@@ -55,7 +55,10 @@ ensure_packages_installed() {
|
||||
fi
|
||||
|
||||
for package in $packages; do
|
||||
if ! command -v $package &> /dev/null; then
|
||||
pkg_status=$(dpkg -s $package 2> /dev/null | grep "Status" | cut -d " " -f 4)
|
||||
|
||||
# If pkg_status is `installed` then we don't need to install the package, otherwise if it's empty then the package is not installed
|
||||
if [ -z $pkg_status ]; then
|
||||
printfe "%s" "yellow" "Installing $package..."
|
||||
echo -en "\r"
|
||||
|
||||
|
34
bin/helpers/vscode-extensions.sh
Normal file
34
bin/helpers/vscode-extensions.sh
Normal file
@@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env zsh
|
||||
|
||||
source ~/dotfiles/bin/helpers/functions.sh
|
||||
|
||||
load_vscode_extensions() {
|
||||
# Clear the array before populating it
|
||||
arr=()
|
||||
while IFS= read -r line; do
|
||||
arr+=("$line")
|
||||
done < <(jq -r '.[]' ~/dotfiles/vscode/extensions.json)
|
||||
# Export the array
|
||||
export extensionList=("${arr[@]}")
|
||||
}
|
||||
|
||||
ensure_vscode_extensions_installed() {
|
||||
# Load extensions list from jq in ~/dotfiles/vscode/extensions.json
|
||||
load_vscode_extensions
|
||||
|
||||
for extension in "${extensionList[@]}"; do
|
||||
result=$(code --list-extensions | grep -E "^${extension}$")
|
||||
if [ -z "$result" ]; then
|
||||
printfe "%s" "yellow" "Installing $extension..."
|
||||
code --install-extension $extension
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
printfe "%s\n" "red" "Failed to install $extension"
|
||||
exit 1
|
||||
fi
|
||||
printfe "%s\n" "green" "Installed $extension"
|
||||
else
|
||||
printfe "%s\n" "green" "$extension is already installed"
|
||||
fi
|
||||
done
|
||||
}
|
@@ -4,5 +4,6 @@ Usage: dotf [options] [optional parameters]
|
||||
|
||||
update: Pull latest changes, and update symlinks and configurations.
|
||||
export: Export dconf, gsettings, and other configurations.
|
||||
status: Show the status of the dotfiles repository.
|
||||
help: Shows this help message
|
||||
|
Reference in New Issue
Block a user