#!/bin/bash set -eu COIN_DIR=/opt/coin NGINX_COIN_FILE=/etc/nginx/conf.d/coin.local.d/coin.conf function use_git() { local COIN_GIT=$(realpath $1) if [ -f "${COIN_DIR}/manage.py" ] || [ -L "${COIN_DIR}/manage.py" ]; then cp ${COIN_DIR}/coin/settings_local.py ${COIN_DIR}/settings_local.py || true for subpath in $(ls ${COIN_GIT}/); do rm -Rf ${COIN_DIR}/$subpath || true ln -s ${COIN_GIT}/$subpath ${COIN_DIR}/$subpath done cp ${COIN_DIR}/settings_local.py ${COIN_DIR}/coin/settings_local.py bash --init-file <(echo "cd ${COIN_DIR}; source venv/bin/activate; pip install -r requirements.txt; exit") fi } function restore() { # Restore db if [ -f $(pwd)/../dump.sql ]; then PGPASSWORD=$(grep -oP "'PASSWORD': '\K[^']+" ${COIN_DIR}/coin/settings_local.py) dropdb -Ucoin coin || true sudo su -c "createdb -O coin coin" - postgres PGPASSWORD=$(grep -oP "'PASSWORD': '\K[^']+" ${COIN_DIR}/coin/settings_local.py) psql -Ucoin coin < $(pwd)/../dump.sql fi # Restore settings if [ -f $(pwd)/dev_settings.py ]; then sed '/# START DEV SETTINGS/,$d' ${COIN_DIR}/coin/settings_local.py echo '# START DEV SETTINGS' >> ${COIN_DIR}/coin/settings_local.py cat $(pwd)/dev_settings.py >> ${COIN_DIR}/coin/settings_local.py fi } function exit_usage() { echo -e "usage: coin-dev [-g GIT_COIN_DIR] [-r] [-h]" echo -e "Run coin in development mode" echo -e "" echo -e "Options:" echo -e " -r Restore a db located in /opt/coin/dump.sql" echo -e " -g Replace coin with the git repository " echo -e " -h Display this help" exit 0 } restore=false while getopts "g:rh" opt; do case $opt in g) use_git $OPTARG ;; r) restore=true ;; h) exit_usage ;; \?) exit_usage ;; esac done if $restore; then restore fi if [ -f ${COIN_DIR}/manage.py ]; then sed -i "s@http://unix:${COIN_DIR}/sock@http://127.0.0.1:8000@" ${NGINX_COIN_FILE} service nginx reload service coin stop bash --init-file <(echo "cd ${COIN_DIR}; source venv/bin/activate; python manage.py migrate; python manage.py runserver 0.0.0.0:8000") fi