Compare commits

...

10 Commits

Author SHA1 Message Date
Kenneth Reitz 8be04ea656 no ! 2014-04-02 14:05:09 -04:00
Kenneth Reitz de7c16d942 handhold for collectstatic 2014-04-02 14:02:18 -04:00
Kenneth Reitz 5ea843458a improved collectstatic experience 2014-04-02 13:37:19 -04:00
Kenneth Reitz 2c16539190 Merge branch 'stop-finding' of git://github.com/agriffis/heroku-buildpack-python into develop 2014-03-21 15:57:39 -04:00
kennethreitz ed79e61a2f Merge pull request #120 from agriffis/sed-func
Use a sed() function for unbuffered output.
2014-03-21 15:51:18 -04:00
kennethreitz b7bcc69722 Update Readme.md 2014-03-03 16:02:31 -05:00
Aron Griffis e783556e6b dotglob FTW. Doesn't expand . or .. but be explicit just in case. 2014-02-19 20:43:18 -05:00
Aron Griffis 5f96190eb5 Stop calling find for simple operations. Just use extglob.
Additionally use `cp -a` consistently rather than alternating between
`cp -a` and `cp -r`, and don't fail compile if the glob doesn't expand to
anything.
2014-02-17 15:28:17 -05:00
Aron Griffis c579162ef9 Use consistent syntax for declaring functions in utils 2014-02-17 14:55:55 -05:00
Aron Griffis a5cca6de75 Use a sed() function for unbuffered output.
In `bin/steps/collectstatic` the unbuffered output in `indent` is subverted
by calling `sed` first:

```shell
python $MANAGE_FILE collectstatic --noinput  2>&1 | sed '/^Copying/d;/^$/d;/^ /d' | indent
```

This commit fixes this by making `sed` itself unbuffered rather than
putting that logic in the `indent` function.
2014-02-17 14:49:09 -05:00
3 changed files with 42 additions and 30 deletions
-1
View File
@@ -3,7 +3,6 @@ Heroku buildpack: Python
This is a [Heroku buildpack](http://devcenter.heroku.com/articles/buildpacks) for Python apps, powered by [pip](http://www.pip-installer.org/). This is a [Heroku buildpack](http://devcenter.heroku.com/articles/buildpacks) for Python apps, powered by [pip](http://www.pip-installer.org/).
[![Build Status](https://secure.travis-ci.org/heroku/heroku-buildpack-python.png?branch=master)](http://travis-ci.org/heroku/heroku-buildpack-python)
Usage Usage
----- -----
+7 -7
View File
@@ -1,10 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Syntax sugar. source $BIN_DIR/utils
indent() {
RE="s/^/ /"
[ $(uname) == "Darwin" ] && sed -l "$RE" || sed -u "$RE"
}
MANAGE_FILE=$(find . -maxdepth 3 -type f -name 'manage.py' | head -1) MANAGE_FILE=$(find . -maxdepth 3 -type f -name 'manage.py' | head -1)
MANAGE_FILE=${MANAGE_FILE:-fakepath} MANAGE_FILE=${MANAGE_FILE:-fakepath}
@@ -14,19 +10,23 @@ MANAGE_FILE=${MANAGE_FILE:-fakepath}
if [ ! "$DISABLE_COLLECTSTATIC" ] && [ -f "$MANAGE_FILE" ]; then if [ ! "$DISABLE_COLLECTSTATIC" ] && [ -f "$MANAGE_FILE" ]; then
set +e set +e
echo "-----> Preparing static assets"
# Check if collectstatic is configured properly. # Check if collectstatic is configured properly.
python $MANAGE_FILE collectstatic --dry-run --noinput &> /dev/null && RUN_COLLECTSTATIC=true python $MANAGE_FILE collectstatic --dry-run --noinput &> /dev/null && RUN_COLLECTSTATIC=true
# Compile assets if collectstatic appears to be kosher. # Compile assets if collectstatic appears to be kosher.
if [ "$RUN_COLLECTSTATIC" ]; then if [ "$RUN_COLLECTSTATIC" ]; then
echo "-----> Collecting static files" echo " Running collectstatic..."
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
[ $? -ne 0 ] && { [ $? -ne 0 ] && {
echo " ! Error running manage.py collectstatic. More info:" echo " ! Error running 'manage.py collectstatic'. More info:"
echo " http://devcenter.heroku.com/articles/django-assets" echo " http://devcenter.heroku.com/articles/django-assets"
} }
else
echo " Collectstatic configuration error. To debug, run:"
echo " $ heroku run python $MANAGE_FILE collectstatic --noinput"
fi fi
echo echo
+35 -22
View File
@@ -1,62 +1,75 @@
shopt -s extglob shopt -s extglob
[ $(uname) == "Darwin" ] && SED_FLAG='-l' || SED_FLAG='-u' if [ $(uname) == Darwin ]; then
sed() { command sed -l "$@"; }
else
sed() { command sed -u "$@"; }
fi
# Syntax sugar. # Syntax sugar.
indent() { indent() {
RE="s/^/ /" sed "s/^/ /"
sed $SED_FLAG "$RE"
} }
# Clean up pip output # Clean up pip output
cleanup() { cleanup() {
sed $SED_FLAG -e 's/\.\.\.\+/.../g' | sed $SED_FLAG '/already satisfied/Id' | sed $SED_FLAG -e '/Overwriting/Id' | sed $SED_FLAG -e '/python executable/Id' | sed $SED_FLAG -e '/no previously-included files/Id' sed -e 's/\.\.\.\+/.../g' | sed -e '/already satisfied/Id' | sed -e '/Overwriting/Id' | sed -e '/python executable/Id' | sed -e '/no previously-included files/Id'
} }
# Buildpack Steps. # Buildpack Steps.
function puts-step (){ puts-step() {
echo "-----> $@" echo "-----> $@"
} }
# Buildpack Warnings. # Buildpack Warnings.
function puts-warn (){ puts-warn() {
echo " ! $@" echo " ! $@"
} }
# Usage: $ set-env key value # Usage: $ set-env key value
function set-env (){ set-env() {
echo "export $1=$2" >> $PROFILE_PATH echo "export $1=$2" >> $PROFILE_PATH
} }
# Usage: $ set-default-env key value # Usage: $ set-default-env key value
function set-default-env (){ set-default-env() {
echo "export $1=\${$1:-$2}" >> $PROFILE_PATH echo "export $1=\${$1:-$2}" >> $PROFILE_PATH
} }
# Usage: $ set-default-env key value # Usage: $ set-default-env key value
function un-set-env (){ un-set-env() {
echo "unset $1" >> $PROFILE_PATH echo "unset $1" >> $PROFILE_PATH
} }
# Does some serious copying. # Does some serious copying.
function deep-cp (){ deep-cp() {
find -H $1 -maxdepth 1 -name '.*' -a \( -type d -o -type f -o -type l \) -exec cp -a '{}' $2 \; declare source="$1" target="$2"
cp -r $1/!(tmp) $2
# echo copying $1 to $2 mkdir -p "$target"
# cp doesn't like being called without source params,
# so make sure they expand to something first.
# subshell to avoid surprising caller with shopts.
(
shopt -s nullglob dotglob
set -- "$source"/!(tmp|.|..)
[[ $# == 0 ]] || cp -a "$@" "$target"
)
} }
# Does some serious moving. # Does some serious moving.
function deep-mv (){ deep-mv() {
deep-cp $1 $2 deep-cp "$1" "$2"
deep-rm "$1"
rm -fr $1/!(tmp)
find -H $1 -maxdepth 1 -name '.*' -a \( -type d -o -type f -o -type l \) -exec rm -fr '{}' \;
} }
# Does some serious deleting. # Does some serious deleting.
function deep-rm (){ deep-rm() {
rm -fr $1/!(tmp) # subshell to avoid surprising caller with shopts.
find -H $1 -maxdepth 1 -name '.*' -a \( -type d -o -type f -o -type l \) -exec rm -fr '{}' \; (
shopt -s dotglob
rm -rf "$1"/!(tmp|.|..)
)
} }
@@ -77,4 +90,4 @@ sub-env() {
$1 $1
) )
} }