Files
smart-serow/scripts
2026-01-26 11:41:04 +09:00
..
2026-01-25 00:34:01 +09:00
2026-01-25 00:34:01 +09:00
2026-01-26 00:20:52 +09:00
2026-01-25 23:13:30 +09:00
2026-01-26 11:35:17 +09:00
2026-01-25 23:13:30 +09:00
2026-01-25 23:13:30 +09:00
2026-01-26 00:20:52 +09:00
2026-01-26 00:20:52 +09:00

Scripts

Build, deploy, and setup helpers for the Smart Serow project.

UI Build & Deploy

Script Purpose
build.py Cross-compile Flutter app for ARM64. Runs generate_theme.py first.
deploy.py rsync UI bundle to Pi, optionally restart service
build-deploy.py Convenience wrapper: build → deploy → restart
python3 build.py              # Build only
python3 deploy.py --restart   # Deploy and restart service
python3 build-deploy.py       # All-in-one
python3 build.py --clean      # Clean rebuild

Backend Deploy

Script Purpose
deploy_backend.py rsync Python backend to Pi, optionally restart service
python3 deploy_backend.py             # Deploy only
python3 deploy_backend.py --restart   # Deploy and restart service

Backend and UI are completely independent — separate paths, separate services, separate deploys.

Theme Generation

Script Purpose
generate_theme.py Converts extra/themes/*.jsonpi/ui/lib/theme/app_colors.dart

Called automatically by build.py. Looks for theme matching navigator in config.json, falls back to default.json.

Pi Setup

Script Purpose
pi_setup.sh First-time Pi config for UI (deps, permissions, systemd)
pi_setup_backend.sh First-time Pi config for backend (uv, gpsd, systemd)
smartserow-ui.service.sample UI systemd unit template
smartserow-backend.service.sample Backend systemd unit template
# On the Pi - UI setup
chmod +x pi_setup.sh
./pi_setup.sh

# On the Pi - Backend setup (independent)
chmod +x pi_setup_backend.sh
./pi_setup_backend.sh

Configuration

File Purpose
deploy_target.sample.json Template for deploy settings
deploy_target.json Your actual deploy config (gitignored)
{
  "user": "pi",
  "host": "raspberrypi.local",
  "remote_path": "/opt/smartserow",
  "service_name": "smartserow-ui",
  "assets_path": "~/smartserow-ui/assets",
  "backend_path": "/opt/smartserow-backend",
  "backend_service": "smartserow-backend"
}

Shell vs Python

Both .sh and .py versions exist for some scripts. The Python versions are more robust (better error handling, colored output). Use those.