mirror of
https://github.com/get-drexa/drive.git
synced 2025-11-30 21:41:39 +00:00
55 lines
1.4 KiB
Bash
Executable File
55 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Install VS Code extensions from devcontainer.json
|
|
# This script reads extensions from the single source of truth
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
DEVCONTAINER_JSON="$SCRIPT_DIR/../.devcontainer/devcontainer.json"
|
|
|
|
echo "Installing VS Code extensions from devcontainer.json..."
|
|
|
|
if [ ! -f "$DEVCONTAINER_JSON" ]; then
|
|
echo "Error: devcontainer.json not found at $DEVCONTAINER_JSON"
|
|
exit 1
|
|
fi
|
|
|
|
# Use Bun to parse JSON and extract extensions
|
|
EXTENSIONS=$(bun -e "
|
|
const config = await Bun.file('$DEVCONTAINER_JSON').json();
|
|
const extensions = config?.customizations?.vscode?.extensions ?? [];
|
|
console.log(extensions.join('\n'));
|
|
")
|
|
|
|
if [ -z "$EXTENSIONS" ]; then
|
|
echo "No extensions found in devcontainer.json"
|
|
exit 0
|
|
fi
|
|
|
|
# Determine which CLI to use (code-server, cursor, or code)
|
|
if command -v code-server &> /dev/null; then
|
|
CLI="code-server"
|
|
elif command -v cursor &> /dev/null; then
|
|
CLI="cursor"
|
|
elif command -v code &> /dev/null; then
|
|
CLI="code"
|
|
else
|
|
echo "Warning: No VS Code CLI found (code-server, cursor, or code)"
|
|
echo "Extensions to install:"
|
|
echo "$EXTENSIONS"
|
|
exit 0
|
|
fi
|
|
|
|
echo "Using $CLI to install extensions..."
|
|
|
|
# Install each extension
|
|
echo "$EXTENSIONS" | while read -r ext; do
|
|
if [ -n "$ext" ]; then
|
|
echo "Installing: $ext"
|
|
$CLI --install-extension "$ext" 2>/dev/null || true
|
|
fi
|
|
done
|
|
|
|
echo "Extension installation complete!"
|