Skip to content
Snippets Groups Projects
Commit 359a3b0d authored by Kenneth Reitz's avatar Kenneth Reitz
Browse files

collectstatic improvements.

parent d46e0efc
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env bash #!/usr/bin/env bash
# Django Collectstatic runner. If you have Django installed, collectstatic will
# automatically be executed as part of the build process. If collectstatic
# fails, your build fails.
# This functionality will only activate if Django is in requirements.txt.
# Runtime arguments:
# - $DISABLE_COLLECTSTATIC: disables this functionality.
# - $DEBUG_COLLECTSTATIC: upon failure, print out environment variables.
source $BIN_DIR/utils source $BIN_DIR/utils
# Location of 'manage.py', if it exists.
MANAGE_FILE=$(find . -maxdepth 3 -type f -name 'manage.py' -printf '%d\t%P\n' | sort -nk1 | cut -f2 | head -1) MANAGE_FILE=$(find . -maxdepth 3 -type f -name 'manage.py' -printf '%d\t%P\n' | sort -nk1 | cut -f2 | head -1)
MANAGE_FILE=${MANAGE_FILE:-fakepath} MANAGE_FILE=${MANAGE_FILE:-fakepath}
# Legacy file-based support for $DISABLE_COLLECTSTATIC
[ -f .heroku/collectstatic_disabled ] && DISABLE_COLLECTSTATIC=1 [ -f .heroku/collectstatic_disabled ] && DISABLE_COLLECTSTATIC=1
# Ensure that Django is explicitily specified in requirments.txt
pip-grep -s requirements.txt django Django && DJANGO_INSTALLED=1 pip-grep -s requirements.txt django Django && DJANGO_INSTALLED=1
bpwatch start collectstatic bpwatch start collectstatic # metrics collection
if [ ! "$DISABLE_COLLECTSTATIC" ] && [ -f "$MANAGE_FILE" ] && [ "$DJANGO_INSTALLED" ]; then if [ ! "$DISABLE_COLLECTSTATIC" ] && [ -f "$MANAGE_FILE" ] && [ "$DJANGO_INSTALLED" ]; then
set +e set +e
echo "-----> Preparing static assets with 'collectstatic'." echo "-----> Preparing static assets with 'collectstatic'."
echo " Running collectstatic..." # Run collectstatic, cleanup some of the noisy output.
python $MANAGE_FILE collectstatic --noinput 2>&1 | sed '/^Copying/d;/^$/d;/^ /d' | indent python $MANAGE_FILE collectstatic --noinput 2>&1 | sed '/^Copying/d;/^$/d;/^ /d' | indent
# Display a warning if collectstatic failed. # Display a warning if collectstatic failed.
...@@ -23,6 +37,16 @@ if [ ! "$DISABLE_COLLECTSTATIC" ] && [ -f "$MANAGE_FILE" ] && [ "$DJANGO_INSTALL ...@@ -23,6 +37,16 @@ if [ ! "$DISABLE_COLLECTSTATIC" ] && [ -f "$MANAGE_FILE" ] && [ "$DJANGO_INSTALL
echo " ! Error while runnning '$ python $MANAGE_FILE collectstatic --noinput'." echo " ! Error while runnning '$ python $MANAGE_FILE collectstatic --noinput'."
echo " See traceback above for more details." echo " See traceback above for more details."
echo " More info: http://devcenter.heroku.com/articles/django-assets" echo " More info: http://devcenter.heroku.com/articles/django-assets"
# Additionally, dump out the environment, if debug mode is on.
if [ "$DEBUG_COLLECTSTATIC" ]; then
echo
echo "****** Collectstatic environment variables:"
echo
env
fi
# Abort the build.
exit 1 exit 1
} }
...@@ -30,4 +54,4 @@ if [ ! "$DISABLE_COLLECTSTATIC" ] && [ -f "$MANAGE_FILE" ] && [ "$DJANGO_INSTALL ...@@ -30,4 +54,4 @@ if [ ! "$DISABLE_COLLECTSTATIC" ] && [ -f "$MANAGE_FILE" ] && [ "$DJANGO_INSTALL
echo echo
fi fi
bpwatch stop collectstatic bpwatch stop collectstatic # metrics collection
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment