| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- #!/bin/bash
- set -euo pipefail
- # --- CONFIG ---
- MATCH="manage.py runserver"
- PLIST="$HOME/Library/LaunchAgents/com.hungyroot.celery.plist"
- ICON="🥕"
- # --- Helpers ---
- is_running() {
- /bin/ps waux | /usr/bin/grep -F "$MATCH" | /usr/bin/grep -v grep >/dev/null 2>&1
- }
- # --- Menu bar title ---
- if is_running; then
- echo "$ICON 🟢"
- else
- echo "$ICON 🔴"
- fi
- echo "---"
- # --- Actions ---
- if is_running; then
- echo "Stop | bash='$0' param1=stop terminal=false refresh=true"
- echo "Restart | bash='$0' param1=restart terminal=false refresh=true"
- else
- echo "Start | bash='$0' param1=start terminal=false refresh=true"
- fi
- echo "---"
- echo "Show matching processes | bash='$0' param1=ps terminal=true"
- echo "Open plist | bash='/usr/bin/open' param1='$PLIST' terminal=false"
- # --- Handler ---
- ACTION="${1:-}"
- case "$ACTION" in
- start)
- /bin/launchctl bootstrap "gui/$(id -u)" "$PLIST" 2>/dev/null || true
- /bin/launchctl kickstart -k "gui/$(id -u)/$(/usr/bin/plutil -extract Label raw -o - "$PLIST")" 2>/dev/null || true
- ;;
- stop)
- # Kill only matching Celery runserver processes
- /bin/ps waux | /usr/bin/grep -F "$MATCH" | /usr/bin/grep -v grep | /usr/bin/awk '{print $2}' | /usr/bin/xargs -r kill
- ;;
- restart)
- "$0" stop
- sleep 0.5
- "$0" start
- ;;
- ps)
- /bin/ps waux | /usr/bin/grep -F "$MATCH" | /usr/bin/grep -v grep || echo "(no matches)"
- ;;
- esac
|