diff options
Diffstat (limited to 'pkg/scripts/bootstrap_develop.sh')
-rwxr-xr-x | pkg/scripts/bootstrap_develop.sh | 191 |
1 files changed, 191 insertions, 0 deletions
diff --git a/pkg/scripts/bootstrap_develop.sh b/pkg/scripts/bootstrap_develop.sh new file mode 100755 index 00000000..4660c499 --- /dev/null +++ b/pkg/scripts/bootstrap_develop.sh @@ -0,0 +1,191 @@ +#!/bin/bash +###################################################################### +# boostrap_develop.sh +# Copyright (C) 2013 LEAP +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +###################################################################### +set -e # Exit immediately if a command exits with a non-zero status. +REPOSITORIES="bitmask_client leap_pycommon soledad keymanager leap_mail" +PACKAGES="leap_pycommon keymanager soledad/common soledad/client soledad/server leap_mail bitmask_client" +REPOS_ROOT=`pwd` # Root path for all the needed repositories + +PS4=">> " # for debugging + +# Escape code +esc=`echo -en "\033"` + +# Set colors +cc_green="${esc}[0;32m" +cc_yellow="${esc}[0;33m" +cc_blue="${esc}[0;34m" +cc_red="${esc}[0;31m" +cc_normal=`echo -en "${esc}[m\017"` + +clone_repos() { + status="cloning repositories" + echo "${cc_green}Status: $status...${cc_normal}" + set -x # show commands + + # clone the leap.se repos + git clone ssh://gitolite@leap.se/bitmask_client + git clone ssh://gitolite@leap.se/leap_pycommon + git clone ssh://gitolite@leap.se/soledad + git clone ssh://gitolite@leap.se/keymanager + git clone ssh://gitolite@leap.se/leap_mail + + set +x + echo "${cc_green}Status: $status done!${cc_normal}" +} + +checkout_develop(){ + status="checkout develop" + echo "${cc_green}Status: $status...${cc_normal}" + set -x # show commands + + # get the latest develop in every repo + for repo in $REPOSITORIES; do + cd $REPOS_ROOT/$repo + git checkout -f develop + done + + set +x + echo "${cc_green}Status: $status done!${cc_normal}" +} + +update_repos() { + status="updating repositories" + echo "${cc_green}Status: $status...${cc_normal}" + set -x # show commands + + # get the latest develop in every repo + for repo in $REPOSITORIES; do + cd $REPOS_ROOT/$repo + git checkout -f develop + git fetch origin; git fetch --tags origin + git reset --hard origin/develop + done + + set +x + echo "${cc_green}Status: $status done!${cc_normal}" +} + +create_venv() { + status="creating virtualenv" + echo "${cc_green}Status: $status...${cc_normal}" + set -x # show commands + + # create and activate the virtualenv + cd $REPOS_ROOT + virtualenv bitmask.venv && source ./bitmask.venv/bin/activate + + # symlink PySide to the venv + cd $REPOS_ROOT/bitmask_client + ./pkg/postmkvenv.sh + + set +x + echo "${cc_green}Status: $status done.${cc_normal}" +} + +setup_develop() { + status="installing packages" + echo "${cc_green}Status: $status...${cc_normal}" + set -x # show commands + + # do a setup develop in every package + for package in $PACKAGES; do + cd $REPOS_ROOT/$package + python setup.py develop + done + + # hack to solve gnupg version problem + pip uninstall -y gnupg && pip install gnupg + + set +x + echo "${cc_green}Status: $status done.${cc_normal}" +} + +finish(){ + echo "${cc_green}Status: process completed.${cc_normal}" + echo "You can run the client with the following command:" + echo -n "${cc_yellow}" + echo " shell> source bitmask.venv/bin/activate" + echo " shell> python bitmask_client/src/leap/bitmask/app.py -d" + echo "${cc_normal}" + echo "or with this script using:" + echo "${cc_yellow} shell> $0 run${cc_normal}" + echo +} + +initialize() { + clone_repos + checkout_develop + create_venv + setup_develop + + # make: compile ui and resources in client + make + + finish +} + +update() { + update_repos + + source $REPOS_ROOT/bitmask.venv/bin/activate + + setup_develop + + # make: compile ui and resources in client + make + + finish +} + +run() { + echo "${cc_green}Status: running client...${cc_normal}" + source bitmask.venv/bin/activate + set -x + python bitmask_client/src/leap/bitmask/app.py -d $* + set +x +} + +help() { + echo ">> LEAP developer helper" + echo "Bootstraps the environment to start developing the bitmask client" + echo "with all the needed repositories and dependencies." + echo + echo "Usage: $0 {init | update | help}" + echo + echo " init : Initialize repositories, create virtualenv and \`python setup.py develop\` all." + echo " update : Update the repositories and install new deps (if needed)." + echo " run : Runs the client (any extra parameters will be sent to the app)." + echo " help : Show this help" + echo +} + +case "$1" in + init) + initialize + ;; + update) + update + ;; + run) + run + ;; + *) + help + ;; +esac |