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 :
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)