#!/bin/bash # # Copyright (c) 2014 ThoughtWorks, Inc. # # Pixelated is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # Pixelated 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 Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with Pixelated. If not, see <http://www.gnu.org/licenses/>. # test dependencies set -e export NODE_PATH='/home/vagrant/boxed_node_modules/node_modules/' if [ ! $USERNAME ] then export USERNAME=`whoami` fi usage() { echo "Usage: $0 [-v <virtualenv path>] [-n <custom node modules directory>]" 1>&2; exit 1; } VIRTUALENV_PATH=".virtualenv" CUSTOM_NODE_MODULES_LOCATION="" while getopts "n:v:" OPT; do case "${OPT}" in v) VIRTUALENV_PATH=${OPTARG} ;; n) # custom node_modules installation CUSTOM_NODE_MODULES_LOCATION=${OPTARG} ;; *) usage ;; esac done shift $((OPTIND-1)) function check_installed() { set +e which $1 if [ $? -ne 0 ]; then echo "## You must have ${1} installed and in the PATH to run Pixelated-User-Agent" echo "## Check our wiki for more information on dependencies:" echo "## https://github.com/pixelated-project/pixelated-user-agent/wiki/Installing-dependencies" echo "## exiting..." exit 1 fi set -e } # The below is necessary to allow node to use enough memory # so that installing phantomjs won't fail mkdir -p /home/vagrant/bin cat > /home/vagrant/bin/node <<EOF #!/usr/bin/env bash /usr/bin/node --max_old_space_size=2000 "\$@" EOF chmod +x /home/vagrant/bin/node export PATH=/home/vagrant/bin:$PATH function install_node_modules_at_custom_location() { local LOCATION="$1" local WEBUI_DIR=$(pwd) if [ -e "$WEBUI_DIR/node_modules" ] ; then echo "It seems there is already a node_modules folder" 1>&2 return fi if [ ! -e "$LOCATION" ] ; then mkdir "$LOCATION" pushd "$LOCATION" ln -s "$WEBUI_DIR/package.json" package.json npm install popd fi if [ ! -h "node_modules" ] ; then rm -Rf "node_modules" ln -s "$LOCATION/node_modules" node_modules fi } for dependency in node npm ruby virtualenv git gpg compass; do check_installed $dependency done # install web-ui dependencies cd web-ui UIPATH=`pwd` if [ -z "$CUSTOM_NODE_MODULES_LOCATION" ] ; then npm install else install_node_modules_at_custom_location "$CUSTOM_NODE_MODULES_LOCATION" fi node_modules/bower/bin/bower -V install --config.interactive=false --allow-root LC_ALL=en_US.UTF-8 ./go build # install service dependencies cd .. rm -rf "$VIRTUALENV_PATH" virtualenv "$VIRTUALENV_PATH" source "$VIRTUALENV_PATH/bin/activate" # they can't be on the same command because it breaks pip upgrade pip install --upgrade pip pip install --upgrade setuptools make setup pip uninstall -y enum34 && pip install enum34 pip uninstall -y pysqlcipher && pip install pysqlcipher # this is needed so pysqlcipher gets recompiled with the right version of glibc # print usage cat <<EOF ############### ## You will need an account in a LEAP provider with mail support. You can request an invite code for ## https://dev.pixelated-project.org, please refer to point 4) in the [Getting started guide](https://github.com/pixelated/pixelated-user-agent#getting-started). ## Once you are done, activate your virtual environment by running: ## source $VIRTUALENV_PATH/bin/activate ## The User agent will be available on http://localhost:3333 after running: ## pixelated-user-agent EOF