Mercurial > bottledash
diff contrib/dashboardctl @ 40:bef9105f2d28
Merge dashboardctl repository
author | Gernot Schulz <gernot@intevation.de> |
---|---|
date | Tue, 10 Nov 2015 11:47:46 +0100 |
parents | c3955e5cf3b3 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contrib/dashboardctl Tue Nov 10 11:47:46 2015 +0100 @@ -0,0 +1,138 @@ +#!/usr/bin/env sh + +# ------------------------------------------------------------------- +# Copyright (C) 2015 by Intevation GmbH +# Author(s): +# Gernot Schulz <gernot.schulz@intevation.de> + +export DISPLAY=":0.0" + +OLDDB=/home/pi/incoming_dbs/tech_intern.db +NEWDB=/home/pi/incoming_dbs/tech_intern.db.new + +BOTTLEDASH_PID="$HOME/bottledash.pid" +BOTTLEDASH_LOG="$HOME/bottledash.log" +CHROMIUM_PID="$HOME/chromium.pid" +CHROMIUM_LOG="$HOME/chromium.log" + +usage () { +cat << EOF +Usage: $0 [COMMAND] + +Commands: + --start Start Bottledash and the dashboard/browser + --stop Stop Bottledash and the dashboard/browser + --reload Restart Bottledash and reload the dashboard/browser + --smart-reload If a new DB is available, restart Bottledash and reload + the dashboard/browser + --restart-bd Restart Bottledash + --reload-browser Reload dashboard/browser + --check-db Check if a new DB is available + -h, --help This help +EOF +} + +start_bottledash () { + # taken from start-bottledash-hohup + nohup python3 /home/pi/bottledash/dash.py 2>&1 > $BOTTLEDASH_LOG & + echo $! > $BOTTLEDASH_PID + sleep 10 +} + +stop_bottledash () { + if [ -f "$BOTTLEDASH_PID" ]; then + kill $(cat "$BOTTLEDASH_PID") && rm "$BOTTLEDASH_PID" + fi +} + +start_chromium () { + # taken from show-dashboard + rm -R $HOME/.cache/chromium/Default/Cache/ + DISPLAY=:0.0 nohup chromium --new --noerrdialogs --kiosk \ + http://localhost:8080 2>&1 > $CHROMIUM_LOG & + echo $! > $CHROMIUM_PID +} + + +stop_chromium () { + if [ -f "$CHROMIUM_PID" ]; then + kill $(cat "$CHROMIUM_PID") && rm "$CHROMIUM_PID" + fi +} + +xdo_reload_chromium () { + # Start Chromium if necessary + if [ -f "$BOTTLEDASH_PID" ] && [ -d /proc/$(cat "$CHROMIUM_PID") ]; then + # Send F5 to Chromium + WID=$(xdotool search --onlyvisible --class chromium | head -1) + xdotool windowactivate ${WID} + xdotool key F5 + else + start_chromium + fi +} + +check_new_db () { + if [ ! -f "$NEWDB" ]; then + echo 0 ; return + fi + OLDSIZE=$(md5sum $OLDDB | awk '{print $1}') + NEWSIZE=$(md5sum $NEWDB | awk '{print $1}') + if [ "$OLDSIZE" != "$NEWSIZE" ]; then + echo 1 + else + echo 0 + fi +} + +update_db () { + if [ $(check_new_db) -eq 1 ]; then + mv "$NEWDB" "$OLDDB" + fi +} + +case $1 in + '--start') + start_bottledash + start_chromium + ;; + '--stop') + stop_bottledash + stop_chromium + ;; + '--restart-bd') + stop_bottledash + start_bottledash + ;; + '--reload-browser') + xdo_reload_chromium + ;; + '--reload') + stop_bottledash + start_bottledash + xdo_reload_chromium + ;; + '--check-db') + check_new_db + ;; + '--smart-reload') + if [ $(check_new_db) -eq 1 ]; then + update_db + stop_bottledash + start_bottledash + sleep 10 + xdo_reload_chromium + fi + ;; + '-h'|'--help') + usage + exit 0 + ;; + *) + echo "ERROR: unknown command: $1" >&2 + usage + exit 2 + ;; +esac + +# vim: set ft=sh ts=4 sw=4 expandtab :