#!/bin/bash # Copyright (C) 2017 Lars Wirzenius # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . set -eu get() { set -eu python3 -c ' import yaml, sys filename, varname = sys.argv[1:] config = yaml.safe_load(open(filename)) print(config.get(varname, "")) ' "$@" } run_bottle() { set -eu local port="$(get "$config" gunicorn-port)" export QVISQVE_CONFIG="$1" python3 -c "import qvisqve; qvisqve.create_app().run(host='127.0.0.1', port=$port)" } run_gunicorn() { set -eu local config="$1" local gunicorn="$(get "$config" gunicorn)" local log_file="$(get "$config" gunicorn-log)" local pid_file="$(get "$config" gunicorn-pid-file)" local port="$(get "$config" gunicorn-port)" if [ "${pid_file:=no}" = no ] then pid_opt="" else pid_opt="-p $pid_file" fi opts=" --bind 127.0.0.1:$port \ -w1 \ --log-file $log_file \ $pid_opt \ --log-level debug \ --limit-request-field_size=0 \ " if [ "$gunicorn" = background ] then opts="$opts --daemon" fi export QVISQVE_CONFIG="$config" gunicorn3 $opts qvisqve.backend:app } config="$1" gunicorn="$(get "$config" gunicorn)" case "$gunicorn" in no|False) run_bottle "$config" ;; yes|True|background) run_gunicorn "$config" ;; esac