source: OpenWorkouts-current/bin/install @ ec51ffa

currentfeature/docs
Last change on this file since ec51ffa was ec51ffa, checked in by Borja Lopez <borja@…>, 5 years ago

Fixed creationg of the mail queue maildir by the install script

  • Property mode set to 100755
File size: 3.7 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] >> ${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_start_stop() {
97    echo "OpenWorkouts successfully installed in ${env_path}"
98    echo ""
99    echo "You can now start the OpenWorkouts service calling:"
100    echo ""
101    echo "  cd ${current} && ./bin/start"
102    echo ""
103    echo "(the installation script left a log under ${install_log})"
104    echo ""
105    # echo "You can stop any running OpenWorkouts instances calling:"
106    # echo ""
107    # echo "  ${current}/bin/stop"
108    # echo ""
109}
110
111set_scripts_permissions
112check_python3
113create_venv
114upgrade_pip_setuptools
115install_openworkouts
116install_js_deps
117create_mail_queue
118setup_start_stop
Note: See TracBrowser for help on using the repository browser.