mirror of
https://github.com/ChuckBuilds/LEDMatrix.git
synced 2026-08-06 03:08:05 +00:00
Verified each finding against the code; fixes for the valid ones: - install_dependencies_apt.py: the installer listed 'freetype', but the declared dependency is freetype-py — an apt miss would pip-install the wrong PyPI package. Now installs freetype-py with an import-name mapping (pre-existing bug, surfaced by the review). - api_v3.py: pixel_mapper_config is validated as a string before being saved to display.hardware (JSON callers could previously store an object/list the matrix library can't use). - .cursorrules: the Plugin Loading Process and File Organization sections still said discovery scans plugins/ — now consistent with the corrected overview (configured directory, default plugin-repos/). - README.md: removed the stale '(except the core calendar)' claim — no core calendar exists in src/ — and qualified the plugin inventory (official plugins in the monorepo; third-party from their own repos). - CONFIG_REFERENCE.md: hardware_mapping now shows the code fallback (adafruit-hat-pwm) alongside the template value. - PLUGIN_REGISTRY_SETUP_GUIDE.md: check_plugin.py takes --plugin, not a positional id. - scripts/fix_perms/fix_*.sh: exec bits set so the documented 'sudo ./...' invocations work. - Guard tests hardened: template guard now catches multi-line render_template() calls; widget guard parses actual <script> src values and fails if the widgets dir goes missing; type hints and docstrings added per repo coding guidelines. Skipped with reasons (noted on the PR): limit_refresh_rate_hz 100-vs-90 is documented as intentional in CONFIG_REFERENCE.md; the psutil comment already names the enforcing manifest; docs/archive/ findings are out of scope per the docs policy (archive may rot). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SXb4mKcAkVaxkeTb3YnAdr
87 lines
3.1 KiB
Bash
Executable File
87 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# LEDMatrix Cache Permissions Fix Script
|
|
# This script fixes permissions on all known cache directories so they're writable by the daemon or current user
|
|
# Also sets up placeholder logo directories for sports managers
|
|
|
|
echo "Fixing LEDMatrix cache directory permissions..."
|
|
|
|
# Get the real user (not root when running with sudo)
|
|
REAL_USER=${SUDO_USER:-$USER}
|
|
# Resolve the home directory of the real user robustly
|
|
if command -v getent >/dev/null 2>&1; then
|
|
REAL_HOME=$(getent passwd "$REAL_USER" | cut -d: -f6)
|
|
else
|
|
REAL_HOME=$(eval echo ~"$REAL_USER")
|
|
fi
|
|
REAL_GROUP=$(id -gn "$REAL_USER")
|
|
|
|
# Known cache directories for LEDMatrix. Use the actual user's home instead of a hard-coded path.
|
|
CACHE_DIRS=(
|
|
"/var/cache/ledmatrix"
|
|
"$REAL_HOME/.ledmatrix_cache"
|
|
)
|
|
|
|
for CACHE_DIR in "${CACHE_DIRS[@]}"; do
|
|
echo ""
|
|
echo "Checking cache directory: $CACHE_DIR"
|
|
if [ ! -d "$CACHE_DIR" ]; then
|
|
echo " - Directory does not exist. Creating it..."
|
|
sudo mkdir -p "$CACHE_DIR"
|
|
fi
|
|
echo " - Current permissions:"
|
|
ls -ld "$CACHE_DIR"
|
|
echo " - Fixing permissions..."
|
|
# Make directory writable by services regardless of user context
|
|
sudo chmod 777 "$CACHE_DIR"
|
|
sudo chown "$REAL_USER":"$REAL_GROUP" "$CACHE_DIR"
|
|
echo " - Updated permissions:"
|
|
ls -ld "$CACHE_DIR"
|
|
echo " - Testing write access as $REAL_USER..."
|
|
if sudo -u "$REAL_USER" test -w "$CACHE_DIR"; then
|
|
echo " ✓ $CACHE_DIR is now writable by $REAL_USER"
|
|
else
|
|
echo " ✗ $CACHE_DIR is still not writable by $REAL_USER"
|
|
fi
|
|
echo " - Permissions fix complete for $CACHE_DIR."
|
|
done
|
|
|
|
# Set up placeholder logos directory for sports managers
|
|
echo ""
|
|
echo "Setting up placeholder logos directory for sports managers..."
|
|
|
|
PLACEHOLDER_DIR="/var/cache/ledmatrix/placeholder_logos"
|
|
if [ ! -d "$PLACEHOLDER_DIR" ]; then
|
|
echo "Creating placeholder logos directory: $PLACEHOLDER_DIR"
|
|
sudo mkdir -p "$PLACEHOLDER_DIR"
|
|
sudo chown "$REAL_USER":"$REAL_GROUP" "$PLACEHOLDER_DIR"
|
|
sudo chmod 777 "$PLACEHOLDER_DIR"
|
|
else
|
|
echo "Placeholder logos directory already exists: $PLACEHOLDER_DIR"
|
|
sudo chmod 777 "$PLACEHOLDER_DIR"
|
|
sudo chown "$REAL_USER":"$REAL_GROUP" "$PLACEHOLDER_DIR"
|
|
fi
|
|
|
|
echo " - Current permissions:"
|
|
ls -ld "$PLACEHOLDER_DIR"
|
|
echo " - Testing write access as $REAL_USER..."
|
|
if sudo -u "$REAL_USER" test -w "$PLACEHOLDER_DIR"; then
|
|
echo " ✓ Placeholder logos directory is writable by $REAL_USER"
|
|
else
|
|
echo " ✗ Placeholder logos directory is not writable by $REAL_USER"
|
|
fi
|
|
|
|
# Test with daemon user (which the system might run as)
|
|
if sudo -u daemon test -w "$PLACEHOLDER_DIR" 2>/dev/null; then
|
|
echo " ✓ Placeholder logos directory is writable by daemon user"
|
|
else
|
|
echo " ✗ Placeholder logos directory is not writable by daemon user"
|
|
fi
|
|
|
|
echo ""
|
|
echo "All cache directory permission fixes attempted."
|
|
echo "If you still see errors, check which user is running the LEDMatrix service and ensure it matches the owner above."
|
|
echo ""
|
|
echo "The system will now create placeholder logos in:"
|
|
echo " $PLACEHOLDER_DIR"
|
|
echo "This should eliminate the permission denied warnings for sports logos." |