Fix ] in the if statement on line 64

- Also fixes a number of shellcheck errors which prevents future errors

Signed-off-by: Dan Webb <dan.webb@damacus.io>
This commit is contained in:
Dan Webb
2023-11-27 21:16:17 +00:00
parent 3120a7e789
commit 70eb9b3c02

View File

@@ -1,15 +1,15 @@
#!/bin/bash #!/bin/bash
LIBRARY_NAME=`grep -m 1 name pyproject.toml | awk -F" = " '{print substr($2,2,length($2)-2)}'` LIBRARY_NAME=$(grep -m 1 name pyproject.toml | awk -F" = " '{print substr($2,2,length($2)-2)}')
MODULE_NAME="grow" MODULE_NAME="grow"
CONFIG_FILE=config.txt CONFIG_FILE=config.txt
CONFIG_DIR="/boot/firmware" CONFIG_DIR="/boot/firmware"
DATESTAMP=`date "+%Y-%m-%d-%H-%M-%S"` DATESTAMP=$(date "+%Y-%m-%d-%H-%M-%S")
CONFIG_BACKUP=false CONFIG_BACKUP=false
APT_HAS_UPDATED=false APT_HAS_UPDATED=false
RESOURCES_TOP_DIR=$HOME/Pimoroni RESOURCES_TOP_DIR=$HOME/Pimoroni
VENV_BASH_SNIPPET=$RESOURCES_DIR/auto_venv.sh VENV_BASH_SNIPPET=$RESOURCES_DIR/auto_venv.sh
VENV_DIR=$HOME/.virtualenvs/pimoroni VENV_DIR=$HOME/.virtualenvs/pimoroni
WD=`pwd` WD=$(pwd)
USAGE="./install.sh (--unstable)" USAGE="./install.sh (--unstable)"
POSITIONAL_ARGS=() POSITIONAL_ARGS=()
FORCE=false FORCE=false
@@ -18,7 +18,7 @@ PYTHON="python"
user_check() { user_check() {
if [ $(id -u) -eq 0 ]; then if [ "$(id -u)" -eq 0 ]; then
printf "Script should not be run as root. Try './install.sh'\n" printf "Script should not be run as root. Try './install.sh'\n"
exit 1 exit 1
fi fi
@@ -75,8 +75,8 @@ find_config() {
} }
venv_bash_snippet() { venv_bash_snippet() {
if [ ! -f $VENV_BASH_SNIPPET ]; then if [ ! -f "$VENV_BASH_SNIPPET" ]; then
cat << EOF > $VENV_BASH_SNIPPET cat << EOF > "$VENV_BASH_SNIPPET"
# Add `source $RESOURCES_DIR/auto_venv.sh` to your ~/.bashrc to activate # Add `source $RESOURCES_DIR/auto_venv.sh` to your ~/.bashrc to activate
# the Pimoroni virtual environment automagically! # the Pimoroni virtual environment automagically!
VENV_DIR="$VENV_DIR" VENV_DIR="$VENV_DIR"
@@ -92,21 +92,21 @@ EOF
} }
venv_check() { venv_check() {
PYTHON_BIN=`which $PYTHON` PYTHON_BIN=$(which "$PYTHON")
if [[ $VIRTUAL_ENV == "" ]] || [[ $PYTHON_BIN != $VIRTUAL_ENV* ]]; then if [[ $VIRTUAL_ENV == "" ]] || [[ $PYTHON_BIN != $VIRTUAL_ENV* ]]; then
printf "This script should be run in a virtual Python environment.\n" printf "This script should be run in a virtual Python environment.\n"
if confirm "Would you like us to create one for you?"; then if confirm "Would you like us to create one for you?"; then
if [ ! -f $VENV_DIR/bin/activate ]; then if [ ! -f "$VENV_DIR/bin/activate" ]; then
inform "Creating virtual Python environment in $VENV_DIR, please wait...\n" inform "Creating virtual Python environment in $VENV_DIR, please wait...\n"
mkdir -p $VENV_DIR mkdir -p "$VENV_DIR"
/usr/bin/python3 -m venv $VENV_DIR --system-site-packages /usr/bin/python3 -m venv "$VENV_DIR" --system-site-packages
venv_bash_snippet venv_bash_snippet
else else
inform "Found existing virtual Python environment in $VENV_DIR\n" inform "Found existing virtual Python environment in $VENV_DIR\n"
fi fi
inform "Activating virtual Python environment in $VENV_DIR..." inform "Activating virtual Python environment in $VENV_DIR..."
inform "source $VENV_DIR/bin/activate\n" inform "source $VENV_DIR/bin/activate\n"
source $VENV_DIR/bin/activate source "$VENV_DIR/bin/activate"
else else
exit 1 exit 1
@@ -119,11 +119,11 @@ function do_config_backup {
CONFIG_BACKUP=true CONFIG_BACKUP=true
FILENAME="config.preinstall-$LIBRARY_NAME-$DATESTAMP.txt" FILENAME="config.preinstall-$LIBRARY_NAME-$DATESTAMP.txt"
inform "Backing up $CONFIG_DIR/$CONFIG_FILE to $CONFIG_DIR/$FILENAME\n" inform "Backing up $CONFIG_DIR/$CONFIG_FILE to $CONFIG_DIR/$FILENAME\n"
sudo cp $CONFIG_DIR/$CONFIG_FILE $CONFIG_DIR/$FILENAME sudo cp "$CONFIG_DIR/$CONFIG_FILE $CONFIG_DIR/$FILENAME"
mkdir -p $RESOURCES_TOP_DIR/config-backups/ mkdir -p "$RESOURCES_TOP_DIR/config-backups/"
cp $CONFIG_DIR/$CONFIG_FILE $RESOURCES_TOP_DIR/config-backups/$FILENAME cp $CONFIG_DIR/$CONFIG_FILE "$RESOURCES_TOP_DIR/config-backups/$FILENAME"
if [ -f "$UNINSTALLER" ]; then if [ -f "$UNINSTALLER" ]; then
echo "cp $RESOURCES_TOP_DIR/config-backups/$FILENAME $CONFIG_DIR/$CONFIG_FILE" >> $UNINSTALLER echo "cp $RESOURCES_TOP_DIR/config-backups/$FILENAME $CONFIG_DIR/$CONFIG_FILE" >> "$UNINSTALLER"
fi fi
fi fi
} }
@@ -134,8 +134,8 @@ function apt_pkg_install {
for ((i = 0; i < ${#PACKAGES_IN[@]}; i++)); do for ((i = 0; i < ${#PACKAGES_IN[@]}; i++)); do
PACKAGE="${PACKAGES_IN[$i]}" PACKAGE="${PACKAGES_IN[$i]}"
if [ "$PACKAGE" == "" ]; then continue; fi if [ "$PACKAGE" == "" ]; then continue; fi
printf "Checking for $PACKAGE\n" printf "Checking for %s\n" "$PACKAGE"
dpkg -L $PACKAGE > /dev/null 2>&1 dpkg -L "$PACKAGE" > /dev/null 2>&1
if [ "$?" == "1" ]; then if [ "$?" == "1" ]; then
PACKAGES+=("$PACKAGE") PACKAGES+=("$PACKAGE")
fi fi
@@ -149,7 +149,7 @@ function apt_pkg_install {
fi fi
sudo apt install -y $PACKAGES sudo apt install -y $PACKAGES
if [ -f "$UNINSTALLER" ]; then if [ -f "$UNINSTALLER" ]; then
echo "apt uninstall -y $PACKAGES" >> $UNINSTALLER echo "apt uninstall -y $PACKAGES" >> "$UNINSTALLER"
fi fi
fi fi
} }
@@ -176,8 +176,8 @@ while [[ $# -gt 0 ]]; do
;; ;;
*) *)
if [[ $1 == -* ]]; then if [[ $1 == -* ]]; then
printf "Unrecognised option: $1\n"; printf "Unrecognised option: %s\n" "$1";
printf "Usage: $USAGE\n"; printf "Usage: %s\n" "$USAGE";
exit 1 exit 1
fi fi
POSITIONAL_ARGS+=("$1") POSITIONAL_ARGS+=("$1")
@@ -188,14 +188,14 @@ done
user_check user_check
venv_check venv_check
if [ ! -f `which $PYTHON` ]; then if [ ! -f "$(which $PYTHON)" ]; then
printf "Python path $PYTHON not found!\n" printf "Python path %s not found!\n" "$PYTHON"
exit 1 exit 1
fi fi
PYTHON_VER=`$PYTHON --version` PYTHON_VER=$($PYTHON --version)
printf "$LIBRARY_NAME Python Library: Installer\n\n" printf "%s Python Library: Installer\n\n" $LIBRARY_NAME
inform "Checking Dependencies. Please wait..." inform "Checking Dependencies. Please wait..."
@@ -221,21 +221,21 @@ if [ $? -ne 0 ]; then
exit 1 exit 1
fi fi
eval $CONFIG_VARS eval "$CONFIG_VARS"
RESOURCES_DIR=$RESOURCES_TOP_DIR/$LIBRARY_NAME RESOURCES_DIR=$RESOURCES_TOP_DIR/$LIBRARY_NAME
UNINSTALLER=$RESOURCES_DIR/uninstall.sh UNINSTALLER=$RESOURCES_DIR/uninstall.sh
RES_DIR_OWNER=`stat -c "%U" $RESOURCES_TOP_DIR` RES_DIR_OWNER=$(stat -c "%U" "$RESOURCES_TOP_DIR")
if [[ "$RES_DIR_OWNER" == "root" ]]; then if [[ "$RES_DIR_OWNER" == "root" ]]; then
warning "\n\nFixing $RESOURCES_TOP_DIR permissions!\n\n" warning "\n\nFixing $RESOURCES_TOP_DIR permissions!\n\n"
sudo chown -R $USER:$USER $RESOURCES_TOP_DIR sudo chown -R "$USER:$USER" "$RESOURCES_TOP_DIR"
fi fi
mkdir -p $RESOURCES_DIR mkdir -p "$RESOURCES_DIR"
cat << EOF > $UNINSTALLER cat << EOF > "$UNINSTALLER"
printf "It's recommended you run these steps manually.\n" printf "It's recommended you run these steps manually.\n"
printf "If you want to run the full script, open it in\n" printf "If you want to run the full script, open it in\n"
printf "an editor and remove 'exit 1' from below.\n" printf "an editor and remove 'exit 1' from below.\n"
@@ -254,14 +254,14 @@ apt_pkg_install "${APT_PACKAGES[@]}"
if $UNSTABLE; then if $UNSTABLE; then
pip_pkg_install . pip_pkg_install .
else else
pip_pkg_install $LIBRARY_NAME pip_pkg_install "$LIBRARY_NAME"
fi fi
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
success "Done!\n" success "Done!\n"
echo "$PYTHON -m pip uninstall $LIBRARY_NAME" >> $UNINSTALLER echo "$PYTHON -m pip uninstall $LIBRARY_NAME" >> "$UNINSTALLER"
fi fi
cd $WD cd "$WD" || exit 1
find_config find_config
@@ -271,7 +271,7 @@ for ((i = 0; i < ${#SETUP_CMDS[@]}; i++)); do
if [[ "$CMD" == *"raspi-config"* ]] || [[ "$CMD" == *"$CONFIG_DIR/$CONFIG_FILE"* ]] || [[ "$CMD" == *"\$CONFIG_DIR/\$CONFIG_FILE"* ]]; then if [[ "$CMD" == *"raspi-config"* ]] || [[ "$CMD" == *"$CONFIG_DIR/$CONFIG_FILE"* ]] || [[ "$CMD" == *"\$CONFIG_DIR/\$CONFIG_FILE"* ]]; then
do_config_backup do_config_backup
fi fi
eval $CMD eval "$CMD"
done done
for ((i = 0; i < ${#CONFIG_TXT[@]}; i++)); do for ((i = 0; i < ${#CONFIG_TXT[@]}; i++)); do
@@ -281,7 +281,7 @@ for ((i = 0; i < ${#CONFIG_TXT[@]}; i++)); do
inform "Adding $CONFIG_LINE to $CONFIG_DIR/$CONFIG_FILE\n" inform "Adding $CONFIG_LINE to $CONFIG_DIR/$CONFIG_FILE\n"
sudo sed -i "s/^#$CONFIG_LINE/$CONFIG_LINE/" $CONFIG_DIR/$CONFIG_FILE sudo sed -i "s/^#$CONFIG_LINE/$CONFIG_LINE/" $CONFIG_DIR/$CONFIG_FILE
if ! grep -q "^$CONFIG_LINE" $CONFIG_DIR/$CONFIG_FILE; then if ! grep -q "^$CONFIG_LINE" $CONFIG_DIR/$CONFIG_FILE; then
printf "$CONFIG_LINE\n" | sudo tee --append $CONFIG_DIR/$CONFIG_FILE printf "%s\n" "$CONFIG_LINE" | sudo tee --append $CONFIG_DIR/$CONFIG_FILE
fi fi
fi fi
done done
@@ -289,8 +289,8 @@ done
if [ -d "examples" ]; then if [ -d "examples" ]; then
if confirm "Would you like to copy examples to $RESOURCES_DIR?"; then if confirm "Would you like to copy examples to $RESOURCES_DIR?"; then
inform "Copying examples to $RESOURCES_DIR" inform "Copying examples to $RESOURCES_DIR"
cp -r examples/ $RESOURCES_DIR cp -r examples/ "$RESOURCES_DIR"
echo "rm -r $RESOURCES_DIR" >> $UNINSTALLER echo "rm -r $RESOURCES_DIR" >> "$UNINSTALLER"
success "Done!" success "Done!"
fi fi
fi fi
@@ -300,7 +300,7 @@ printf "\n"
if confirm "Would you like to generate documentation?"; then if confirm "Would you like to generate documentation?"; then
pip_pkg_install pdoc pip_pkg_install pdoc
printf "Generating documentation.\n" printf "Generating documentation.\n"
$PYTHON -m pdoc $MODULE_NAME -o $RESOURCES_DIR/docs > /dev/null $PYTHON -m pdoc $MODULE_NAME -o "$RESOURCES_DIR/docs" > /dev/null
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
inform "Documentation saved to $RESOURCES_DIR/docs" inform "Documentation saved to $RESOURCES_DIR/docs"
success "Done!" success "Done!"