Add a script to install into a zip that can be unzipped and used on Google App
Engine.
http://codereview.appspot.com/6476053/
diff --git a/tools/gae-zip-creator.sh b/tools/gae-zip-creator.sh
new file mode 100644
index 0000000..849e26e
--- /dev/null
+++ b/tools/gae-zip-creator.sh
@@ -0,0 +1,68 @@
+#!/bin/bash
+#
+# Copyright 2012, Google Inc
+#
+# Generates a zip of the google api python client and dependencies.
+#
+# Author: afshar@google.com (Ali Afshar)
+
+# Exit on failure.
+set -e
+
+# Where to build the zip.
+ROOT_PATH=$(pwd)/build/gae
+BUILD_PATH=${ROOT_PATH}/build
+LIB_PATH=${ROOT_PATH}/lib
+ENV_PATH=${ROOT_PATH}/ve
+LOG_PATH=${ROOT_PATH}/gae_zip_build.log
+
+# The api client version
+APICLIENT_VERSION=$(python -c "import apiclient; print apiclient.__version__")
+
+# Where to create the zip.
+DIST_PATH=$(pwd)/dist/gae
+ZIP_NAME=google-api-python-client-gae-${APICLIENT_VERSION}.zip
+ZIP_PATH=${DIST_PATH}/${ZIP_NAME}
+
+# Make sure we are all clean.
+echo "Cleaning build env"
+rm -rf ${ROOT_PATH}
+mkdir -p ${ROOT_PATH}
+
+# We must not use the system pip, since that exposes a bug uninstalling httplib2
+# instead, install the dev version of pip.
+echo "Creating virtualenv and installing pip==dev"
+virtualenv --no-site-packages ${ENV_PATH} >> ${LOG_PATH}
+${ENV_PATH}/bin/pip install --upgrade pip==dev >> ${LOG_PATH}
+
+# Install the library with dependencies.
+echo "Building google-api-python client"
+${ENV_PATH}/bin/pip install -b ${BUILD_PATH} -t ${LIB_PATH} . >> ${LOG_PATH}
+
+# Prune the things we don't want.
+echo "Pruning target library"
+find ${TARGET_PATH} -name "*.pyc" -exec rm {} \; >> ${LOG_PATH}
+rm -rf ${TARGET_PATH}/*.egg-info >> ${LOG_PATH}
+
+# Create the zip.
+echo "Creating zip"
+mkdir -p ${DIST_PATH}
+pushd ${LIB_PATH} >> ${LOG_PATH}
+zip -r ${ZIP_PATH} * >> ${LOG_PATH}
+popd >> ${LOG_PATH}
+
+# We are done.
+echo "Built zip in ${ZIP_PATH}"
+
+# Sanity test the zip.
+# TODO (afshar): Run the complete test suite.
+echo "Sanity testing the zip:"
+export SANITY_MODS="gflags httplib2 apiclient uritemplate oauth2client"
+export SANITY_ZIP=${ZIP_PATH}
+export PYTHONPATH=${ZIP_PATH}
+${ENV_PATH}/bin/python -c "import sys, os
+sys.path.pop(0) # remove the pwd
+for name in os.getenv('SANITY_MODS').split():
+ mod = __import__(name)
+ assert os.getenv('SANITY_ZIP') in mod.__file__
+ print ' ', os.path.relpath(mod.__file__)"