coin-dev 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #!/bin/bash
  2. set -eu
  3. COIN_DIR=/opt/coin
  4. NGINX_COIN_FILE=/etc/nginx/conf.d/coin.local.d/coin.conf
  5. function use_git() {
  6. local COIN_GIT=$(realpath $1)
  7. if [ -f "${COIN_DIR}/manage.py" ] || [ -L "${COIN_DIR}/manage.py" ]; then
  8. cp ${COIN_DIR}/coin/settings_local.py ${COIN_DIR}/settings_local.py || true
  9. for subpath in $(ls ${COIN_GIT}/); do
  10. rm -Rf ${COIN_DIR}/$subpath || true
  11. ln -s ${COIN_GIT}/$subpath ${COIN_DIR}/$subpath
  12. done
  13. cp ${COIN_DIR}/settings_local.py ${COIN_DIR}/coin/settings_local.py
  14. bash --init-file <(echo "cd ${COIN_DIR}; source venv/bin/activate; pip install -r requirements.txt; exit")
  15. fi
  16. }
  17. function restore() {
  18. # Restore db
  19. if [ -f $(pwd)/../dump.sql ]; then
  20. PGPASSWORD=$(grep -oP "'PASSWORD': '\K[^']+" ${COIN_DIR}/coin/settings_local.py) dropdb -Ucoin coin || true
  21. sudo su -c "createdb -O coin coin" - postgres
  22. PGPASSWORD=$(grep -oP "'PASSWORD': '\K[^']+" ${COIN_DIR}/coin/settings_local.py) psql -Ucoin coin < $(pwd)/../dump.sql
  23. fi
  24. # Restore settings
  25. if [ -f $(pwd)/dev_settings.py ]; then
  26. sed '/# START DEV SETTINGS/,$d' ${COIN_DIR}/coin/settings_local.py
  27. echo '# START DEV SETTINGS' >> ${COIN_DIR}/coin/settings_local.py
  28. cat $(pwd)/dev_settings.py >> ${COIN_DIR}/coin/settings_local.py
  29. fi
  30. }
  31. function exit_usage() {
  32. echo -e "usage: coin-dev [-g GIT_COIN_DIR] [-r] [-h]"
  33. echo -e "Run coin in development mode"
  34. echo -e ""
  35. echo -e "Options:"
  36. echo -e " -r Restore a db located in /opt/coin/dump.sql"
  37. echo -e " -g Replace coin with the git repository "
  38. echo -e " -h Display this help"
  39. exit 0
  40. }
  41. restore=false
  42. while getopts "g:rh" opt; do
  43. case $opt in
  44. g) use_git $OPTARG ;;
  45. r) restore=true ;;
  46. h) exit_usage ;;
  47. \?) exit_usage ;;
  48. esac
  49. done
  50. if $restore; then
  51. restore
  52. fi
  53. if [ -f ${COIN_DIR}/manage.py ]; then
  54. sed -i "s@http://unix:${COIN_DIR}/sock@http://127.0.0.1:8000@" ${NGINX_COIN_FILE}
  55. service nginx reload
  56. service coin stop
  57. bash --init-file <(echo "cd ${COIN_DIR}; source venv/bin/activate; python manage.py migrate; python manage.py runserver 0.0.0.0:8000")
  58. fi