source: OpenWorkouts-current/bin/install @ 0398a0c

currentfeature/docs
Last change on this file since 0398a0c was d411dae, checked in by Borja Lopez <borja@…>, 4 years ago

(#56) Added lingua and babel as dependencies (needed for i18n)

  • Property mode set to 100755
File size: 4.8 KB
Line 
1#!/bin/sh
2#
3# Script to install OpenWorkouts for development
4#
5
6# Full path to where we run the script from
7current=`pwd`
8# Full path to the main python binary (will be set by check_python3())
9python_bin=''
10# Full path to the env
11env_path=${current}/env
12# full path to the install logs
13install_log=${current}/var/log/install.log
14# mail queue directory (where automatically generated emails are stored)
15mail_queue_path=${current}/var/spool/mqueue
16
17set_scripts_permissions() {
18    echo "Setting up script permissions"
19    # ensure the shell scripts we will need have proper permissions
20    chmod u+x ${current}/bin/js_deps
21    chmod u+x ${current}/bin/start
22}
23
24check_python3() {
25    # if python3 is not installed, exit with an error
26    if command -v python3 > /dev/null; then
27        # ok
28        python_bin=`command -v python3`
29        echo "Found valid python installation: ${python_bin}"
30        return
31    else
32        # no python3 binary, look for python
33        if command -v python > /dev/null; then
34            # python found, check if it is 3.x
35            if `command -v python` -c "import sys; exit(0) if sys.version.startswith('3.') else exit(1)"; then
36                python_bin=`command -v python`
37                echo "Found valid python installation: ${python_bin}"
38                return
39            else
40                # no python binary, error
41                echo "Error: could not find a suitable python version installed, please install python 3.x"
42                exit 1
43            fi
44        else
45            # no python binary, error
46            echo "Error: could not find a suitable python version installed, please install python 3.x"
47            exit 1
48        fi
49    fi
50}
51
52create_venv() {
53    # create a new virtual environment
54    if [ ! -d ${env_path} ]; then
55        echo "Creating new python virtual environment [${env_path}]"
56        ${python_bin} -m venv ${env_path}
57    else
58        if [ ! -f ${env_path}/bin/activate ]; then
59            # env dir found, but not a virtual env
60            echo "Error: ${env_path} exists and is not a valid virtual environment"
61            exit 1
62        else
63            echo "Reusing python virtual environment [${env_path}]"
64        fi
65    fi
66}
67
68upgrade_pip_setuptools() {
69    . ${env_path}/bin/activate
70    echo "Upgrading python packaging tools"
71    yes | pip install --upgrade setuptools pip >> ${install_log}.stdout 2>> ${install_log}.stderr
72    deactivate
73}
74
75install_openworkouts() {
76    . ${env_path}/bin/activate
77    echo "Installing OpenWorkouts dependencies"
78    yes | pip install --upgrade -e ${current}[testing,translations] >> ${install_log}.stdout 2>> ${install_log}.stderr
79    deactivate
80}
81
82install_js_deps() {
83    echo "Installing javascript components"
84    ${current}/bin/js_deps >> ${install_log}.stdout 2>> ${install_log}.stderr
85}
86
87create_mail_queue() {
88    # Creates a Maildir-format directory that pyramid_mailer can use to
89    # queue mails.
90    echo "Creating mail spool directory ${mail_queue_path}"
91    mkdir -p ${mail_queue_path}/new >> ${install_log}.stdout 2>> ${install_log}.stderr
92    mkdir -p ${mail_queue_path}/tmp >> ${install_log}.stdout 2>> ${install_log}.stderr
93    mkdir -p ${mail_queue_path}/cur >> ${install_log}.stdout 2>> ${install_log}.stderr
94}
95
96setup_mail_server() {
97    echo ""
98    echo "IMPORTANT, READ BEFORE STARTING OpenWorkouts"
99    echo "--------------------------------------------"
100    echo ""
101    echo "For emails to be sent by OpenWorkouts you have to set up your mail"
102    echo "server account. Edit the file development.ini and update the"
103    echo "parameters:"
104    echo ""
105    echo "  mail.host = SERVER"
106    echo "  mail.tls = True"
107    echo "  mail.username = USERNAME"
108    echo "  mail.password = PASSWORD"
109    echo ""
110    echo "--------------------------------------------"
111
112}
113
114create_cron_job() {
115    echo ""
116    echo "IMPORTANT, READ BEFORE STARTING OpenWorkouts"
117    echo "--------------------------------------------"
118    echo ""
119    echo "Remember to add a periodic task in your operating system to process"
120    echo "the mail queue, so emails are sent"
121    echo ""
122    echo "In a unix-like system, add this to your crontab:"
123    echo ""
124    echo "*/5 * * * * cd ${current} && ./bin/send_emails > /dev/null 2> /dev/null"
125    echo ""
126    echo "--------------------------------------------"
127    echo ""
128}
129
130setup_start_stop() {
131    echo "OpenWorkouts successfully installed in ${env_path}"
132    echo ""
133    echo "You can now start the OpenWorkouts service calling:"
134    echo ""
135    echo "  cd ${current} && ./bin/start"
136    echo ""
137    echo "(the installation script left a log under ${install_log})"
138    echo ""
139    # echo "You can stop any running OpenWorkouts instances calling:"
140    # echo ""
141    # echo "  ${current}/bin/stop"
142    # echo ""
143}
144
145set_scripts_permissions
146check_python3
147create_venv
148upgrade_pip_setuptools
149install_openworkouts
150install_js_deps
151create_mail_queue
152setup_mail_server
153create_cron_job
154setup_start_stop
Note: See TracBrowser for help on using the repository browser.