11#! /bin/bash
22LIBRARY_NAME=` grep -m 1 name pyproject.toml | awk -F" = " ' {print substr($2,2,length($2)-2)}' `
3- CONFIG=/boot/config.txt
3+ CONFIG_FILE=config.txt
4+ CONFIG_DIR=" /boot/firmware"
45DATESTAMP=` date " +%Y-%m-%d-%H-%M-%S" `
56CONFIG_BACKUP=false
67APT_HAS_UPDATED=false
78RESOURCES_TOP_DIR=$HOME /Pimoroni
8- VENV_BASH_SNIPPET=$RESOURCES_TOP_DIR /auto_venv.sh
9- VENV_DIR=$RESOURCES_TOP_DIR /venv
9+ VENV_BASH_SNIPPET=$RESOURCES_DIR /auto_venv.sh
10+ VENV_DIR=$HOME /.virtualenvs/pimoroni
1011WD=` pwd`
1112USAGE=" ./install.sh (--unstable)"
1213POSITIONAL_ARGS=()
1314FORCE=false
1415UNSTABLE=false
1516PYTHON=" python"
1617
18+
1719user_check () {
1820 if [ $( id -u) -eq 0 ]; then
1921 printf " Script should not be run as root. Try './install.sh'\n"
@@ -55,19 +57,35 @@ warning() {
5557 echo -e " $( tput setaf 1) $1 $( tput sgr0) "
5658}
5759
60+ find_config () {
61+ if [ ! -f " $CONFIG_DIR /$CONFIG_FILE " ]; then
62+ CONFIG_DIR=" /boot"
63+ if [ ! -f " $CONFIG_DIR /$CONFIG_FILE " ]; then
64+ warning " Could not find $CONFIG_FILE !"
65+ exit 1
66+ fi
67+ else
68+ if [ -f " /boot/$CONFIG_FILE " ] && [ ! -L " /boot/$CONFIG_FILE " ]; then
69+ warning " Oops! It looks like /boot/$CONFIG_FILE is not a link to $CONFIG_DIR /$CONFIG_FILE "
70+ warning " You might want to fix this!"
71+ fi
72+ fi
73+ inform " Using $CONFIG_FILE in $CONFIG_DIR "
74+ }
75+
5876venv_bash_snippet () {
5977 if [ ! -f $VENV_BASH_SNIPPET ]; then
6078 cat << EOF > $VENV_BASH_SNIPPET
61- # Add \ ` source $RESOURCES_TOP_DIR /auto_venv.sh\ ` to your ~/.bashrc to activate
79+ # Add ` source $RESOURCES_DIR /auto_venv.sh` to your ~/.bashrc to activate
6280# the Pimoroni virtual environment automagically!
63- PY_ENV_DIR=~/Pimoroni/venv
64- if [ ! -f \$ PY_ENV_DIR /bin/activate ]; then
65- printf "Creating user Python environment in \$ PY_ENV_DIR , please wait...\n"
66- mkdir -p \$ PY_ENV_DIR
67- python3 -m venv --system-site-packages --prompt Pimoroni \$ PY_ENV_DIR
81+ VENV_DIR=" $VENV_DIR "
82+ if [ ! -f \$ VENV_DIR /bin/activate ]; then
83+ printf "Creating user Python environment in \$ VENV_DIR , please wait...\n"
84+ mkdir -p \$ VENV_DIR
85+ python3 -m venv --system-site-packages \$ VENV_DIR
6886fi
6987printf " ↓ ↓ ↓ ↓ Hello, we've activated a Python venv for you. To exit, type \"deactivate\".\n"
70- source \$ PY_ENV_DIR /bin/activate
88+ source \$ VENV_DIR /bin/activate
7189EOF
7290 fi
7391}
@@ -80,7 +98,7 @@ venv_check() {
8098 if [ ! -f $VENV_DIR /bin/activate ]; then
8199 inform " Creating virtual Python environment in $VENV_DIR , please wait...\n"
82100 mkdir -p $VENV_DIR
83- /usr/bin/python3 -m venv $VENV_DIR --system-site-packages --prompt Pimoroni
101+ /usr/bin/python3 -m venv $VENV_DIR --system-site-packages
84102 venv_bash_snippet
85103 else
86104 inform " Found existing virtual Python environment in $VENV_DIR \n"
@@ -99,12 +117,12 @@ function do_config_backup {
99117 if [ ! $CONFIG_BACKUP == true ]; then
100118 CONFIG_BACKUP=true
101119 FILENAME=" config.preinstall-$LIBRARY_NAME -$DATESTAMP .txt"
102- inform " Backing up $CONFIG to /boot /$FILENAME \n"
103- sudo cp $CONFIG /boot /$FILENAME
120+ inform " Backing up $CONFIG_DIR / $CONFIG_FILE to $CONFIG_DIR /$FILENAME \n"
121+ sudo cp $CONFIG_DIR / $CONFIG_FILE $CONFIG_DIR /$FILENAME
104122 mkdir -p $RESOURCES_TOP_DIR /config-backups/
105- cp $CONFIG $RESOURCES_TOP_DIR /config-backups/$FILENAME
123+ cp $CONFIG_DIR / $CONFIG_FILE $RESOURCES_TOP_DIR /config-backups/$FILENAME
106124 if [ -f " $UNINSTALLER " ]; then
107- echo " cp $RESOURCES_TOP_DIR /config-backups/$FILENAME $CONFIG " >> $UNINSTALLER
125+ echo " cp $RESOURCES_TOP_DIR /config-backups/$FILENAME $CONFIG_DIR / $CONFIG_FILE " >> $UNINSTALLER
108126 fi
109127 fi
110128}
@@ -185,7 +203,7 @@ pip_pkg_install toml
185203CONFIG_VARS=` $PYTHON - << EOF
186204import toml
187205config = toml.load("pyproject.toml")
188- p = dict(config['pimoroni'])
206+ p = dict(config['tool'][' pimoroni'])
189207# Convert list config entries into bash arrays
190208for k, v in p.items():
191209 v = "'\n\t'".join(v)
244262
245263cd $WD
246264
265+ find_config
266+
247267for (( i = 0 ; i < ${# SETUP_CMDS[@]} ; i++ )) ; do
248268 CMD=" ${SETUP_CMDS[$i]} "
249- # Attempt to catch anything that touches /boot/ config.txt and trigger a backup
250- if [[ " $CMD " == * " raspi-config" * ]] || [[ " $CMD " == * " $CONFIG " * ]] || [[ " $CMD " == * " \$ CONFIG " * ]]; then
269+ # Attempt to catch anything that touches config.txt and trigger a backup
270+ if [[ " $CMD " == * " raspi-config" * ]] || [[ " $CMD " == * " $CONFIG_DIR / $CONFIG_FILE " * ]] || [[ " $CMD " == * " \$ CONFIG_DIR/ \$ CONFIG_FILE " * ]]; then
251271 do_config_backup
252272 fi
253273 eval $CMD
@@ -257,10 +277,10 @@ for ((i = 0; i < ${#CONFIG_TXT[@]}; i++)); do
257277 CONFIG_LINE=" ${CONFIG_TXT[$i]} "
258278 if ! [ " $CONFIG_LINE " == " " ]; then
259279 do_config_backup
260- inform " Adding $CONFIG_LINE to $CONFIG \n"
261- sudo sed -i " s/^#$CONFIG_LINE /$CONFIG_LINE /" $CONFIG
262- if ! grep -q " ^$CONFIG_LINE " $CONFIG ; then
263- printf " $CONFIG_LINE \n" | sudo tee --append $CONFIG
280+ inform " Adding $CONFIG_LINE to $CONFIG_DIR / $CONFIG_FILE \n"
281+ sudo sed -i " s/^#$CONFIG_LINE /$CONFIG_LINE /" $CONFIG_DIR / $CONFIG_FILE
282+ if ! grep -q " ^$CONFIG_LINE " $CONFIG_DIR / $CONFIG_FILE ; then
283+ printf " $CONFIG_LINE \n" | sudo tee --append $CONFIG_DIR / $CONFIG_FILE
264284 fi
265285 fi
266286done
0 commit comments