view 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 source
#!/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)