Files
fahnen_esp32/.pio/libdeps/esp01_1m/FastLED/install

182 lines
6.8 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# Ensure UTF-8 everywhere (console and Python), including on Windows msys/cygwin
case "$OSTYPE" in
msys*|cygwin*)
if command -v chcp.com >/dev/null 2>&1; then
# Attempt to switch Windows code page to UTF-8 (65001)
chcp.com 65001 >NUL 2>NUL || chcp.com 65001 >/dev/null 2>&1
fi
;;
*)
:
;;
esac
export LANG=C.UTF-8
export LC_ALL=C.UTF-8
export PYTHONUTF8=1
export PYTHONIOENCODING=UTF-8
set -ex
if [ ! -d ".venv" ]; then
echo "Creating Python 3.11 virtual environment..."
uv venv --python 3.11
else
echo "Virtual environment already exists. Skipping."
fi
uv pip install -e . --refresh-package fastled
# This is needed to force the installation to finalize.
uv run python -c "import os; _ = os.getcwd()"
set +e
# if ./activate exists, remove it
if [ -f activate ]; then
rm activate
fi
# symlink activate to .venv/bin/activate on linux/mac and .venv/Scripts/activate on windows
if [[ "$OSTYPE" == "linux-gnu"* || "$OSTYPE" == "darwin"* ]]; then
ln -s .venv/bin/activate activate
else
ln -s .venv/Scripts/activate activate
fi
echo "Setting up C++ development environment..."
# Setup LLVM toolchain on Linux and Windows (msys/cygwin)
if [[ "$OSTYPE" == "linux-gnu"* || "$OSTYPE" == "msys"* || "$OSTYPE" == "cygwin"* ]]; then
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
echo "Setting up LLVM toolchain for Linux..."
else
echo "Setting up LLVM toolchain for Windows..."
fi
uv run python ci/setup-llvm.py .cache/cc
else
echo "Skipping LLVM setup (this platform is not Linux or Windows/msys)."
fi
# Build tests to generate compile_commands.json for clangd
echo "Building C++ tests to generate compile_commands.json..."
uv run -m ci.compiler.cpp_test_run --compile-only --clang --test test_function
echo "Generating auto complete for VSCode (compile_commands.json)"
uv run ci/compile-commands.py
echo "Setting up JavaScript development environment..."
# Install fast JavaScript linter (Node.js + ESLint)
echo "Installing fast JavaScript linter (Node.js + ESLint)..."
if uv run ci/setup-js-linting-fast.py; then
echo "✅ Fast JavaScript linting enabled - 53x faster than Deno!"
else
echo "⚠️ Warning: JavaScript linter setup failed. You can retry with: uv run ci/setup-js-linting-fast.py"
fi
# Install TypeScript for JSDoc type checking
echo "Installing TypeScript for JSDoc type checking..."
if [ -d ".cache/js-tools" ]; then
echo "Installing TypeScript in local js-tools environment..."
cd .cache/js-tools
# Use the local Node.js installation to run npm
if [ -f "node/npm.cmd" ]; then
if ./node/npm.cmd install typescript; then
echo "✅ TypeScript installed successfully for JSDoc checking!"
else
echo "⚠️ Warning: TypeScript installation failed. JSDoc checking will be skipped."
fi
elif [ -f "node/bin/npm" ]; then
if ./node/bin/npm install typescript; then
echo "✅ TypeScript installed successfully for JSDoc checking!"
else
echo "⚠️ Warning: TypeScript installation failed. JSDoc checking will be skipped."
fi
else
echo "⚠️ Warning: Local npm not found in js-tools. Trying global installation..."
cd ../..
if command -v npm >/dev/null 2>&1; then
echo "Using global npm to install TypeScript..."
if npm install -g typescript; then
echo "✅ TypeScript installed globally for JSDoc checking!"
else
echo "⚠️ Warning: Global TypeScript installation failed. JSDoc checking will be skipped."
fi
else
echo "⚠️ Warning: npm not found. TypeScript cannot be installed. JSDoc checking will be skipped."
fi
fi
cd ../.. 2>/dev/null || true
elif command -v npm >/dev/null 2>&1; then
echo "Using global npm to install TypeScript..."
if npm install -g typescript; then
echo "✅ TypeScript installed globally for JSDoc checking!"
else
echo "⚠️ Warning: Global TypeScript installation failed. JSDoc checking will be skipped."
fi
else
echo "⚠️ Warning: npm not found. TypeScript cannot be installed. JSDoc checking will be skipped."
fi
echo "Setting up VSCode extensions..."
# Install Auto Debug extension from local .vsix file
echo "Installing Auto Debug extension for VSCode..."
if [ -f .vscode/DarrenLevine.auto-debug-1.0.2.vsix ]; then
installed_count=0
# Try installing on VSCode
if command -v code &> /dev/null; then
echo "Installing Auto Debug extension on VSCode..."
if code --install-extension .vscode/DarrenLevine.auto-debug-1.0.2.vsix; then
echo "✅ Auto Debug extension installed successfully on VSCode!"
installed_count=$((installed_count + 1))
else
echo "⚠️ Warning: Auto Debug extension installation failed on VSCode."
fi
else
echo " VSCode not found (code command not available)."
fi
# Try installing on Cursor
if command -v cursor &> /dev/null; then
echo "Installing Auto Debug extension on Cursor..."
if cursor --install-extension .vscode/DarrenLevine.auto-debug-1.0.2.vsix; then
echo "✅ Auto Debug extension installed successfully on Cursor!"
installed_count=$((installed_count + 1))
else
echo "⚠️ Warning: Auto Debug extension installation failed on Cursor."
fi
else
echo " Cursor not found (cursor command not available)."
fi
# Summary
if [ $installed_count -eq 0 ]; then
echo "⚠️ Warning: Auto Debug extension could not be installed automatically."
echo " Please install manually:"
echo " - Open VSCode/Cursor"
echo " - Go to Extensions (Ctrl+Shift+X)"
echo " - Click ... menu → Install from VSIX"
echo " - Select: .vscode/DarrenLevine.auto-debug-1.0.2.vsix"
elif [ $installed_count -eq 1 ]; then
echo "✅ Auto Debug extension installed on 1 editor."
else
echo "✅ Auto Debug extension installed on $installed_count editors!"
fi
else
echo "⚠️ Warning: Auto Debug extension file not found at .vscode/DarrenLevine.auto-debug-1.0.2.vsix"
echo " Please ensure the extension file is in the correct location."
fi
# Initialize and update git submodules (including wiki)
echo "Initializing and updating git submodules..."
git submodule init
git submodule update --remote
echo "✅ Git submodules updated!"
echo "🎉 Installation complete!"
echo ""
echo "To use:"
echo " - Run tests: bash test"
echo " - Run linting: bash lint (Python, C++, and JavaScript with JSDoc type checking)"
echo " - Debug in VSCode: Open test file and press F5"
echo " - Auto Debug: Use '🎯 Auto Debug (Smart File Detection)' configuration"
echo " - clangd IntelliSense: Should work automatically in VSCode"