source: OpenWorkouts-current/bin/install @ 1d8d5cd

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

More improvements for the install script:

  • If an existing env is found, reuse it
  • If a directory is found where the env is supposed to be created, stop the installer and show an error
  • Added a method to create the mail queue Maildir we need for queue mails generated by the app
  • Property mode set to 100755
File size: 3.6 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,cur,tmp} >> ${install_log}.stdout 2>> ${install_log}.stderr
92}
93
94setup_start_stop() {
95    echo "OpenWorkouts successfully installed in ${env_path}"
96    echo ""
97    echo "You can now start the OpenWorkouts service calling:"
98    echo ""
99    echo "  cd ${current} && ./bin/start"
100    echo ""
101    echo "(the installation script left a log under ${install_log})"
102    echo ""
103    # echo "You can stop any running OpenWorkouts instances calling:"
104    # echo ""
105    # echo "  ${current}/bin/stop"
106    # echo ""
107}
108
109set_scripts_permissions
110check_python3
111create_venv
112upgrade_pip_setuptools
113install_openworkouts
114install_js_deps
115create_mail_queue
116setup_start_stop
Note: See TracBrowser for help on using the repository browser.