Saturday, April 12, 2008

Download Your Code from Google App Engine

I've been toying around with Google App Engine a little. One feature (among several) that is missing right now is the ability to download your source code after deploying it. (Sure, sure, ..., you should really have your code in a source control system.) While it is likely that Google will give us the ability to download our code in the coming days, I've written a small Makefile that you can use to create a source archive of your site. By deploying the source archive along with your site and then password protecting it you will always have the source handy. Here is the Makefile:

ARCHIVE_DIR=archive
ARCHIVE_NAME=archive.tgz
all: clean
tar -czvf ${ARCHIVE_NAME} --exclude ${ARCHIVE_NAME} -C ../ $${PWD##*/}
mkdir -p ${ARCHIVE_DIR}
mv ${ARCHIVE_NAME} ${ARCHIVE_DIR}
clean:
rm -rf ${ARCHIVE_DIR}
find . -name "*~" -delete
view raw gistfile1.mak hosted with ❤ by GitHub


If you put this in the root of your application and run "make", an archive of the entire application will be stored in archive/archive.tgz. Now you probably want to password protect this resource so add the following in your app.yaml file:

- url: /archive
static_dir: archive
login: admin
view raw gistfile1.txt hosted with ❤ by GitHub


Now if you go to http://yourapp.appspot.com/archive/archive.tgz you'll be prompted to login to download the source archive.

Don't ask me how long it took me to figure out I needed to use two dollar signs on the fancy parameter substitution $${PWD##*/} because it is a shell variable and not a make variable -- really, don't ask.