summaryrefslogtreecommitdiff
path: root/install-pixelated.sh
blob: 35b77fa5bb2c0b883e59694526a574339d74aa4c (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
#!/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

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
}

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 ../service
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
./go setup --always-unzip
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 may find some at http://bitmask.net/

## You might also need to add your LEAP provider ssl certificate to pixelated manually for now, with the following steps:
## The easiest way to find this is accessing https://your.provider.org/ca.crt
## Rename the certificate based on your provider domain name like this 'your.leapprovider.org.crt'
## Put it in services/pixelated/certificates/

## Once you are done, activate your virtual environment by running:
## source $VIRTUALENV_PATH/bin/activate

## The User agent will be available on localhost:3333 after running
## pixelated-user-agent

EOF