summaryrefslogtreecommitdiff
path: root/install-pixelated.sh
blob: 7008063e0ba5567a2878b9dd37ba0025227440f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#!/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.
## 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