11#! /bin/bash
2- LIBRARY_NAME=` grep -m 1 name pyproject.toml | awk -F" = " ' {print substr($2,2,length($2)-2)}' `
2+ LIBRARY_NAME=$( grep -m 1 name pyproject.toml | awk -F" = " ' {print substr($2,2,length($2)-2)}' )
33MODULE_NAME=" grow"
44CONFIG_FILE=config.txt
55CONFIG_DIR=" /boot/firmware"
6- DATESTAMP=` date " +%Y-%m-%d-%H-%M-%S" `
6+ DATESTAMP=$( date " +%Y-%m-%d-%H-%M-%S" )
77CONFIG_BACKUP=false
88APT_HAS_UPDATED=false
99RESOURCES_TOP_DIR=$HOME /Pimoroni
1010VENV_BASH_SNIPPET=$RESOURCES_DIR /auto_venv.sh
1111VENV_DIR=$HOME /.virtualenvs/pimoroni
12- WD=` pwd`
12+ WD=$( pwd)
1313USAGE=" ./install.sh (--unstable)"
1414POSITIONAL_ARGS=()
1515FORCE=false
@@ -18,7 +18,7 @@ PYTHON="python"
1818
1919
2020user_check () {
21- if [ $( id -u) -eq 0 ]; then
21+ if [ " $( id -u) " -eq 0 ]; then
2222 printf " Script should not be run as root. Try './install.sh'\n"
2323 exit 1
2424 fi
@@ -61,7 +61,7 @@ warning() {
6161find_config () {
6262 if [ ! -f " $CONFIG_DIR /$CONFIG_FILE " ]; then
6363 CONFIG_DIR=" /boot"
64- if [ ! -f " $CONFIG_DIR /$CONFIG_FILE " ]; then
64+ if [ ! -f " $CONFIG_DIR /$CONFIG_FILE " ]; then
6565 warning " Could not find $CONFIG_FILE !"
6666 exit 1
6767 fi
@@ -75,8 +75,8 @@ find_config() {
7575}
7676
7777venv_bash_snippet () {
78- if [ ! -f $VENV_BASH_SNIPPET ]; then
79- cat << EOF > $VENV_BASH_SNIPPET
78+ if [ ! -f " $VENV_BASH_SNIPPET " ]; then
79+ cat << EOF > " $VENV_BASH_SNIPPET "
8080# Add ` source $RESOURCES_DIR /auto_venv.sh` to your ~/.bashrc to activate
8181# the Pimoroni virtual environment automagically!
8282VENV_DIR="$VENV_DIR "
9292}
9393
9494venv_check () {
95- PYTHON_BIN=` which $PYTHON `
95+ PYTHON_BIN=$( which " $PYTHON " )
9696 if [[ $VIRTUAL_ENV == " " ]] || [[ $PYTHON_BIN != $VIRTUAL_ENV * ]]; then
9797 printf " This script should be run in a virtual Python environment.\n"
9898 if confirm " Would you like us to create one for you?" ; then
99- if [ ! -f $VENV_DIR /bin/activate ]; then
99+ if [ ! -f " $VENV_DIR /bin/activate" ]; then
100100 inform " Creating virtual Python environment in $VENV_DIR , please wait...\n"
101- mkdir -p $VENV_DIR
102- /usr/bin/python3 -m venv $VENV_DIR --system-site-packages
101+ mkdir -p " $VENV_DIR "
102+ /usr/bin/python3 -m venv " $VENV_DIR " --system-site-packages
103103 venv_bash_snippet
104104 else
105105 inform " Found existing virtual Python environment in $VENV_DIR \n"
106106 fi
107107 inform " Activating virtual Python environment in $VENV_DIR ..."
108108 inform " source $VENV_DIR /bin/activate\n"
109- source $VENV_DIR /bin/activate
109+ source " $VENV_DIR /bin/activate"
110110
111111 else
112112 exit 1
@@ -119,11 +119,11 @@ function do_config_backup {
119119 CONFIG_BACKUP=true
120120 FILENAME=" config.preinstall-$LIBRARY_NAME -$DATESTAMP .txt"
121121 inform " Backing up $CONFIG_DIR /$CONFIG_FILE to $CONFIG_DIR /$FILENAME \n"
122- sudo cp $CONFIG_DIR /$CONFIG_FILE $CONFIG_DIR /$FILENAME
123- mkdir -p $RESOURCES_TOP_DIR /config-backups/
124- cp $CONFIG_DIR /$CONFIG_FILE $RESOURCES_TOP_DIR /config-backups/$FILENAME
122+ sudo cp " $CONFIG_DIR /$CONFIG_FILE $CONFIG_DIR /$FILENAME "
123+ mkdir -p " $RESOURCES_TOP_DIR /config-backups/"
124+ cp $CONFIG_DIR /$CONFIG_FILE " $RESOURCES_TOP_DIR /config-backups/$FILENAME "
125125 if [ -f " $UNINSTALLER " ]; then
126- echo " cp $RESOURCES_TOP_DIR /config-backups/$FILENAME $CONFIG_DIR /$CONFIG_FILE " >> $UNINSTALLER
126+ echo " cp $RESOURCES_TOP_DIR /config-backups/$FILENAME $CONFIG_DIR /$CONFIG_FILE " >> " $UNINSTALLER "
127127 fi
128128 fi
129129}
@@ -134,8 +134,8 @@ function apt_pkg_install {
134134 for (( i = 0 ; i < ${# PACKAGES_IN[@]} ; i++ )) ; do
135135 PACKAGE=" ${PACKAGES_IN[$i]} "
136136 if [ " $PACKAGE " == " " ]; then continue ; fi
137- printf " Checking for $PACKAGE \n "
138- dpkg -L $PACKAGE > /dev/null 2>&1
137+ printf " Checking for %s\n " " $PACKAGE "
138+ dpkg -L " $PACKAGE " > /dev/null 2>&1
139139 if [ " $? " == " 1" ]; then
140140 PACKAGES+=(" $PACKAGE " )
141141 fi
@@ -149,7 +149,7 @@ function apt_pkg_install {
149149 fi
150150 sudo apt install -y $PACKAGES
151151 if [ -f " $UNINSTALLER " ]; then
152- echo " apt uninstall -y $PACKAGES " >> $UNINSTALLER
152+ echo " apt uninstall -y $PACKAGES " >> " $UNINSTALLER "
153153 fi
154154 fi
155155}
@@ -176,8 +176,8 @@ while [[ $# -gt 0 ]]; do
176176 ;;
177177 * )
178178 if [[ $1 == -* ]]; then
179- printf " Unrecognised option: $1 \n " ;
180- printf " Usage: $USAGE \n " ;
179+ printf " Unrecognised option: %s\n " " $1 " ;
180+ printf " Usage: %s\n " " $USAGE " ;
181181 exit 1
182182 fi
183183 POSITIONAL_ARGS+=(" $1 " )
@@ -188,14 +188,14 @@ done
188188user_check
189189venv_check
190190
191- if [ ! -f ` which $PYTHON ` ]; then
192- printf " Python path $PYTHON not found!\n"
191+ if [ ! -f " $( which $PYTHON ) " ]; then
192+ printf " Python path %s not found!\n" " $PYTHON "
193193 exit 1
194194fi
195195
196- PYTHON_VER=` $ PYTHON --version`
196+ PYTHON_VER=$( $ PYTHON --version)
197197
198- printf " $LIBRARY_NAME Python Library: Installer\n\n"
198+ printf " %s Python Library: Installer\n\n" $LIBRARY_NAME
199199
200200inform " Checking Dependencies. Please wait..."
201201
@@ -221,21 +221,21 @@ if [ $? -ne 0 ]; then
221221 exit 1
222222fi
223223
224- eval $CONFIG_VARS
224+ eval " $CONFIG_VARS "
225225
226226RESOURCES_DIR=$RESOURCES_TOP_DIR /$LIBRARY_NAME
227227UNINSTALLER=$RESOURCES_DIR /uninstall.sh
228228
229- RES_DIR_OWNER=` stat -c "%U" $RESOURCES_TOP_DIR `
229+ RES_DIR_OWNER=$( stat -c " %U" " $RESOURCES_TOP_DIR " )
230230
231231if [[ " $RES_DIR_OWNER " == " root" ]]; then
232232 warning " \n\nFixing $RESOURCES_TOP_DIR permissions!\n\n"
233- sudo chown -R $USER :$USER $RESOURCES_TOP_DIR
233+ sudo chown -R " $USER :$USER " " $RESOURCES_TOP_DIR "
234234fi
235235
236- mkdir -p $RESOURCES_DIR
236+ mkdir -p " $RESOURCES_DIR "
237237
238- cat << EOF > $UNINSTALLER
238+ cat << EOF > " $UNINSTALLER "
239239printf "It's recommended you run these steps manually.\n"
240240printf "If you want to run the full script, open it in\n"
241241printf "an editor and remove 'exit 1' from below.\n"
@@ -254,14 +254,14 @@ apt_pkg_install "${APT_PACKAGES[@]}"
254254if $UNSTABLE ; then
255255 pip_pkg_install .
256256else
257- pip_pkg_install $LIBRARY_NAME
257+ pip_pkg_install " $LIBRARY_NAME "
258258fi
259259if [ $? -eq 0 ]; then
260260 success " Done!\n"
261- echo " $PYTHON -m pip uninstall $LIBRARY_NAME " >> $UNINSTALLER
261+ echo " $PYTHON -m pip uninstall $LIBRARY_NAME " >> " $UNINSTALLER "
262262fi
263263
264- cd $WD
264+ cd " $WD " || exit 1
265265
266266find_config
267267
@@ -271,7 +271,7 @@ for ((i = 0; i < ${#SETUP_CMDS[@]}; i++)); do
271271 if [[ " $CMD " == * " raspi-config" * ]] || [[ " $CMD " == * " $CONFIG_DIR /$CONFIG_FILE " * ]] || [[ " $CMD " == * " \$ CONFIG_DIR/\$ CONFIG_FILE" * ]]; then
272272 do_config_backup
273273 fi
274- eval $CMD
274+ eval " $CMD "
275275done
276276
277277for (( i = 0 ; i < ${# CONFIG_TXT[@]} ; i++ )) ; do
@@ -281,16 +281,16 @@ for ((i = 0; i < ${#CONFIG_TXT[@]}; i++)); do
281281 inform " Adding $CONFIG_LINE to $CONFIG_DIR /$CONFIG_FILE \n"
282282 sudo sed -i " s/^#$CONFIG_LINE /$CONFIG_LINE /" $CONFIG_DIR /$CONFIG_FILE
283283 if ! grep -q " ^$CONFIG_LINE " $CONFIG_DIR /$CONFIG_FILE ; then
284- printf " $CONFIG_LINE \n " | sudo tee --append $CONFIG_DIR /$CONFIG_FILE
284+ printf " %s\n " " $CONFIG_LINE " | sudo tee --append $CONFIG_DIR /$CONFIG_FILE
285285 fi
286286 fi
287287done
288288
289289if [ -d " examples" ]; then
290290 if confirm " Would you like to copy examples to $RESOURCES_DIR ?" ; then
291291 inform " Copying examples to $RESOURCES_DIR "
292- cp -r examples/ $RESOURCES_DIR
293- echo " rm -r $RESOURCES_DIR " >> $UNINSTALLER
292+ cp -r examples/ " $RESOURCES_DIR "
293+ echo " rm -r $RESOURCES_DIR " >> " $UNINSTALLER "
294294 success " Done!"
295295 fi
296296fi
@@ -300,7 +300,7 @@ printf "\n"
300300if confirm " Would you like to generate documentation?" ; then
301301 pip_pkg_install pdoc
302302 printf " Generating documentation.\n"
303- $PYTHON -m pdoc $MODULE_NAME -o $RESOURCES_DIR /docs > /dev/null
303+ $PYTHON -m pdoc $MODULE_NAME -o " $RESOURCES_DIR /docs" > /dev/null
304304 if [ $? -eq 0 ]; then
305305 inform " Documentation saved to $RESOURCES_DIR /docs"
306306 success " Done!"
0 commit comments