#!/bin/bash # Generate JS bindings for Cocos2D-X # ... using Android NDK system headers # ... and automatically update submodule references # ... and push these changes to remote repos # Dependencies # # For bindings generator: # (see ../../../tojs/genbindings.sh # ... for the defaults used if the environment is not customized) # # * $PYTHON_BIN # * $CLANG_ROOT # * $NDK_ROOT # # For automatically pushing changes: # # * REMOTE_COCOS2DX_REPOSITORY # * REMOTE_AUTOGEN_BINDINGS_REPOSITORY # * Ensure you have ssh access to above repositories # Exit on error set -e DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" COCOS2DX_ROOT="$DIR"/../../../.. # 1. Generate JS bindings COCOS2DX_ROOT="$COCOS2DX_ROOT" /bin/bash ../../../tojs/genbindings.sh echo echo Bindings generated successfully echo if [ -z "${REMOTE_AUTOGEN_BINDINGS_REPOSITORY+aaa}" ]; then echo echo Environment variable must be set REMOTE_AUTOGEN_BINDINGS_REPOSITORY echo This script expects to automatically push changes echo to this repo echo echo Exiting with failure. echo # example # REMOTE_AUTOGEN_BINDINGS_REPOSITORY="git@github.com:folecr/cocos2dx-autogen-bindings.git" # REMOTE_AUTOGEN_BINDINGS_REPOSITORY="$HOME/test/cocos2dx-autogen-bindings" exit 1 fi if [ -z "${COMMITTAG+aaa}" ]; then # ... if COMMITTAG is not set, use this machine's hostname COMMITTAG=`hostname -s` fi echo Using "'$COMMITTAG'" in the commit messages ELAPSEDSECS=`date +%s` echo Using "$ELAPSEDSECS" in the branch names for pseudo-uniqueness GENERATED_BRANCH=autogeneratedbindings_"$ELAPSEDSECS" GENERATED_GITDIR="$COCOS2DX_ROOT"/scripting/javascript/bindings/generated/.git GENERATED_WORKTREE="$COCOS2DX_ROOT"/scripting/javascript/bindings/generated # git command shortcut gitcmd_GEN="git --git-dir=$GENERATED_GITDIR --work-tree=$GENERATED_WORKTREE" # testing... ${gitcmd_GEN} status # 2. In JSBindings repo, Check out a branch named "autogeneratedbindings" and commit the auto generated bindings to it ${gitcmd_GEN} add README cocos2dx.cpp cocos2dx.hpp cocos2dxapi.js ${gitcmd_GEN} checkout origin/master -b "$GENERATED_BRANCH" ${gitcmd_GEN} commit -m "$COMMITTAG : autogenerated bindings" # 3. In JSBindings repo, Push the commit with generated bindings to "master" of the auto generated bindings repository ${gitcmd_GEN} push "$REMOTE_AUTOGEN_BINDINGS_REPOSITORY" "$GENERATED_BRANCH":master if [ -z "${REMOTE_COCOS2DX_REPOSITORY+aaa}" ]; then echo echo Environment variable is not set REMOTE_COCOS2DX_REPOSITORY echo This script will NOT automatically push changes echo unless this variable is set. echo echo Exiting with success. echo # example # REMOTE_COCOS2DX_REPOSITORY="git@github.com:cocos2d/cocos2d-x.git" # REMOTE_COCOS2DX_REPOSITORY="$HOME/test/cocos2d-x" exit 0 fi COCOS_BRANCH=updategeneratedsubmodule_"$ELAPSEDSECS" pushd "${DIR}" # 4. In Cocos2D-X repo, Checkout a branch named "updategeneratedsubmodule" Update the submodule reference to point to the commit with generated bindings cd "${COCOS2DX_ROOT}" git add scripting/javascript/bindings/generated git checkout origin/gles20 -b "$COCOS_BRANCH" git commit -m "$COMMITTAG : updating submodule reference to latest autogenerated bindings" # 5. In Cocos2D-X repo, Push the commit with updated submodule to "gles20" of the cocos2d-x repository git push "$REMOTE_COCOS2DX_REPOSITORY" "$COCOS_BRANCH":gles20 popd