X-Git-Url: https://git.mdrn.pl/fnp-django-template.git/blobdiff_plain/6dd672eece2a96e384cba8d9a8f2a0601dac9d51..6f10938138ff6017779d03be24c7ed012dbc90a9:/bootstrap.sh diff --git a/bootstrap.sh b/bootstrap.sh new file mode 100644 index 0000000..0059599 --- /dev/null +++ b/bootstrap.sh @@ -0,0 +1,133 @@ +# +# Use as: +# +# source <(curl https://py.mdrn.pl/django) +# + + +# Make it a function, so that it works with `source` +start_project() { + +local DJANGO_REQ='Django>=1.7,<1.8' +local DJANGO_ROOT='src' +local PYPI='https://py.mdrn.pl:8443/simple' +local DEFAULT_PYTHON="`which python3.4`" + +if [ -z "$DEFAULT_PYTHON" ]; then + DEFAULT_PYTHON="`which python3`" +fi +if [ -z "$DEFAULT_PYTHON" ]; then + DEFAULT_PYTHON="`which python`" +fi + +local PROJECT=$PROJECT +if [ -z "$PROJECT" ]; then + PROJECT="$1" +fi + +if [ -z "$FNP_PROJECT_TEMPLATE" ]; then + local FNP_PROJECT_TEMPLATE='https://git.mdrn.pl/fnp-django-template.git/snapshot/HEAD.tar.gz' +fi + +local VIRTUALENVWRAPPER_PATHS=" + /etc/bash_completion.d/virtualenvwrapper + /usr/bin/virtualenvwrapper.sh + /usr/local/bin/virtualenvwrapper.sh +" + +# Colorful output. +local strong='\e[0;32m' +local error='\e[1;31m' +local normal='\e[0m' + +local PYTHON="$PYTHON" +if [ -z "$PYTHON" ]; then + echo "Defaulting to $DEFAULT_PYTHON." + PYTHON="$DEFAULT_PYTHON" +fi + + +echo "Create new Django project." +while [ -z "$PROJECT" ] +do + echo "Name of the project:" + read PROJECT +done +echo -e "Project: ${strong}${PROJECT}${normal}" + +if ! type mkvirtualenv > /dev/null; then + for venv in $VIRTUALENVWRAPPER_PATHS + do + if [ -e "$venv" ] + then + local VIRTUALENVWRAPPER="$venv" + break + fi + done + if [ "$VIRTUALENVWRAPPER" ] + then + echo "virtualenvwrapper found at $VIRTUALENVWRAPPER." + source "$VIRTUALENVWRAPPER" + else + echo -e "${error}ERROR: virtualenvwrapper not found. Tried locations:${normal}" + echo "$VIRTUALENVWRAPPER_PATHS" + echo -e "${error}Install virtualenvwrapper or add the correct path to this script.${normal}" + echo "Aborting." + return + fi +fi + +echo -e "${strong}Creating virtualenv: $PROJECT $PYTHON...${normal}" +mkvirtualenv "$PROJECT" --python "$PYTHON" +echo -e "${strong}Upgrading pip...${normal}" +pip install -i "$PYPI" -U pip +echo -e "${strong}Installing Django...${normal}" +pip install -i "$PYPI" "$DJANGO_REQ" +pip install -i "$PYPI" --pre django-startproject-plus + +echo -e "${strong}Downloading project template...${normal}" +if [[ "$FNP_PROJECT_TEMPLATE" =~ ^(https?|ftp):// ]]; then + local PROJECT_TMPDIR=`mktemp -d fnp-django-template-XXX` + curl "$FNP_PROJECT_TEMPLATE" | tar xzf - -C "$PROJECT_TMPDIR" + local TEMPLATE="$PROJECT_TMPDIR"/fnp-django-template-*/src +else + local TEMPLATE="$FNP_PROJECT_TEMPLATE" +fi + +echo -e "${strong}Starting the project...${normal}" +django-startproject.py \ + --template "$TEMPLATE" \ + --name NOTICE \ + --extra_context='{"year": "`date +%Y`"}' \ + "$PROJECT" + +if [ -n "$PROJECT_TMPDIR" ]; then + rm -rf "$PROJECT_TMPDIR" +fi + +cd "$PROJECT" + +chmod +x "$DJANGO_ROOT"/manage.py +mv _gitignore .gitignore + +echo -e "${strong}Installing requirements...${normal}" +pip install -i "$PYPI" -r requirements.txt +echo -e "${strong}Installing developer requirements...${normal}" +pip install -i "$PYPI" -r requirements-dev.txt +echo -e "${strong}Running syncdb...${normal}" +"$DJANGO_ROOT"/manage.py syncdb --noinput + +echo -e "${strong}Starting new git repository...${normal}" +git init + +echo -e "${strong}What next?${normal}" +echo " * Work on your app, commit to git." +echo " * Review fabfile, use fab for deployment." + + +} +start_project + +# The following is just for displaying it as a webpage:

source <(curl )

+