mirror of
https://github.com/cookiecutter/cookiecutter-django.git
synced 2025-08-02 11:10:12 +03:00
Add setup_venv.sh ; Helper script to setup virtual env for cookiecutter based project.
This commit is contained in:
parent
aedba0b1f5
commit
850c31290a
88
{{cookiecutter.repo_name}}/setup_venv.sh
Executable file
88
{{cookiecutter.repo_name}}/setup_venv.sh
Executable file
|
@ -0,0 +1,88 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
|
||||||
|
# NAME parameter of each environment is used to define
|
||||||
|
# settings module, virtualenv name and requirements file.
|
||||||
|
|
||||||
|
# To setup virtualenvs
|
||||||
|
# 1. Create the requirements file in requirements folder.
|
||||||
|
# 2. Create an evironment settings section in this file
|
||||||
|
# 3. Run this script from parent folder
|
||||||
|
# ./scripts/setup_env.sh
|
||||||
|
|
||||||
|
|
||||||
|
# This script creates virtual environments and adds DB,
|
||||||
|
# settings module and secret key in virtualenv activation hooks
|
||||||
|
# This script does not check for existing virtualenv
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Settings
|
||||||
|
PIP='pip'
|
||||||
|
DJ_SETTINGS='config.settings.'
|
||||||
|
PROJ_NAME='project_name' #<---- Change This
|
||||||
|
|
||||||
|
# Secret Key Generator ( No special chrs ; not so secure )
|
||||||
|
KEYGEN=`python2.7 -c 'import random; import string; print "".join([random.SystemRandom().choice(string.digits + string.letters ) for i in range(100)])'`
|
||||||
|
SK='KEYGEN'
|
||||||
|
|
||||||
|
# Environments and Parameters #<---- Change This ( Add sections )
|
||||||
|
declare -A PRODUCTION
|
||||||
|
PRODUCTION['NAME']='production'
|
||||||
|
PRODUCTION['DB_URL']='postgres://lab:lab@127.0.0.1:5432/'${PROJ_NAME}'_production'
|
||||||
|
eval PRODUCTION['SKEY']=\$${SK}
|
||||||
|
|
||||||
|
declare -A LOCAL
|
||||||
|
LOCAL['NAME']='local'
|
||||||
|
LOCAL['DB_URL']='postgres://lab:lab@127.0.0.1:5432/'${PROJ_NAME}'_local'
|
||||||
|
eval LOCAL['SKEY']=\$${SK}
|
||||||
|
|
||||||
|
declare -A TEST
|
||||||
|
TESTL['NAME']='test'
|
||||||
|
TEST['DB_URL']='postgres://lab:lab@127.0.0.1:5432/'${PROJ_NAME}'_test'
|
||||||
|
eval TEST['SKEY']=\$${SK}
|
||||||
|
|
||||||
|
APP_VENVS=( 'LOCAL' 'PRODUCTION' 'TEST' ) #<------ Change This
|
||||||
|
|
||||||
|
|
||||||
|
# Settings VARs stay above this comment
|
||||||
|
# Source virtualenvwrapper for command mkvirtualenv and friends
|
||||||
|
|
||||||
|
VENV_SH=`env | grep virtualenvwrapper.sh | awk -F= '{print $2}'`
|
||||||
|
if [ -z ${VENV_SH} ];then
|
||||||
|
echo 'Unable to source virtualenvwrapper.sh'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
source ${VENV_SH}
|
||||||
|
|
||||||
|
|
||||||
|
echo 'WORKON_HOME is '${WORKON_HOME}
|
||||||
|
|
||||||
|
# Iterate over the VENV Definitions
|
||||||
|
# Create Virtual Env and place ENV vars in hook files
|
||||||
|
for venv in "${APP_VENVS[@]}"
|
||||||
|
do
|
||||||
|
eval DB_URL=\${${venv}['DB_URL']}
|
||||||
|
eval NAME=\${${venv}['NAME']}
|
||||||
|
eval SKEY=\${${venv}['SKEY']}
|
||||||
|
|
||||||
|
mkvirtualenv ${PROJ_NAME}_${NAME}
|
||||||
|
workon ${PROJ_NAME}_${NAME}
|
||||||
|
${PIP} install -r requirements/${NAME}.txt
|
||||||
|
|
||||||
|
cat << EOF > ${WORKON_HOME}/${PROJ_NAME}_${NAME}/bin/postactivate
|
||||||
|
export DJANGO_SETTINGS_MODULE=${DJ_SETTINGS}${NAME}
|
||||||
|
export DATABASE_URL='${DB_URL}'
|
||||||
|
export SECRET_KEY='${SKEY}'
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat << EOF > ${WORKON_HOME}/${PROJ_NAME}_${NAME}/bin/predeactivate
|
||||||
|
unset DJANGO_SETTINGS_MODULE
|
||||||
|
unset SECRET_KEY
|
||||||
|
unset DATABASE_URL
|
||||||
|
EOF
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user