@@ -4,18 +4,62 @@ CONFIG=/boot/config.txt
44DATESTAMP=` date " +%Y-%M-%d-%H-%M-%S" `
55CONFIG_BACKUP=false
66APT_HAS_UPDATED=false
7+ USER_HOME=/home/$SUDO_USER
8+ RESOURCES_TOP_DIR=$USER_HOME /Pimoroni
9+ WD=` pwd`
10+
11+ user_check () {
12+ if [ $( id -u) -ne 0 ]; then
13+ printf " Script must be run as root. Try 'sudo ./install.sh'\n"
14+ exit 1
15+ fi
16+ }
717
8- if [ $( id -u) -ne 0 ]; then
9- printf " Script must be run as root. Try 'sudo ./install.sh'\n"
10- exit 1
11- fi
18+ confirm () {
19+ if [ " $FORCE " == ' -y' ]; then
20+ true
21+ else
22+ read -r -p " $1 [y/N] " response < /dev/tty
23+ if [[ $response =~ ^(yes| y| Y)$ ]]; then
24+ true
25+ else
26+ false
27+ fi
28+ fi
29+ }
30+
31+ prompt () {
32+ read -r -p " $1 [y/N] " response < /dev/tty
33+ if [[ $response =~ ^(yes| y| Y)$ ]]; then
34+ true
35+ else
36+ false
37+ fi
38+ }
39+
40+ success () {
41+ echo -e " $( tput setaf 2) $1 $( tput sgr0) "
42+ }
43+
44+ inform () {
45+ echo -e " $( tput setaf 6) $1 $( tput sgr0) "
46+ }
47+
48+ warning () {
49+ echo -e " $( tput setaf 1) $1 $( tput sgr0) "
50+ }
1251
1352function do_config_backup {
1453 if [ ! $CONFIG_BACKUP == true ]; then
1554 CONFIG_BACKUP=true
16- FILENAME=" /boot/config.preinstall-$LIBRARY_NAME -$DATESTAMP .txt"
17- printf " Backing up $CONFIG to $FILENAME \n"
18- cp $CONFIG $FILENAME
55+ FILENAME=" config.preinstall-$LIBRARY_NAME -$DATESTAMP .txt"
56+ inform " Backing up $CONFIG to /boot/$FILENAME \n"
57+ cp $CONFIG /boot/$FILENAME
58+ mkdir -p $RESOURCES_TOP_DIR /config-backups/
59+ cp $CONFIG $RESOURCES_TOP_DIR /config-backups/$FILENAME
60+ if [ -f " $UNINSTALLER " ]; then
61+ echo " cp $RESOURCES_TOP_DIR /config-backups/$FILENAME $CONFIG " >> $UNINSTALLER
62+ fi
1963 fi
2064}
2165
@@ -33,14 +77,19 @@ function apt_pkg_install {
3377 PACKAGES=" ${PACKAGES[@]} "
3478 if ! [ " $PACKAGES " == " " ]; then
3579 echo " Installing missing packages: $PACKAGES "
36- if [ ! $APT_HAS_UPDATED ]; then
37- apt update
38- APT_HAS_UPDATED=true
39- fi
80+ if [ ! $APT_HAS_UPDATED ]; then
81+ apt update
82+ APT_HAS_UPDATED=true
83+ fi
4084 apt install -y $PACKAGES
85+ if [ -f " $UNINSTALLER " ]; then
86+ echo " apt uninstall -y $PACKAGES "
87+ fi
4188 fi
4289}
4390
91+ user_check
92+
4493apt_pkg_install python-configparser
4594
4695CONFIG_VARS=` python - << EOF
@@ -68,27 +117,45 @@ CONFIG_TXT={configtxt}
68117EOF`
69118
70119if [ $? -ne 0 ]; then
71- printf " Error parsing configuration...\n"
120+ warning " Error parsing configuration...\n"
72121 exit 1
73122fi
74123
75124eval $CONFIG_VARS
76125
126+ RESOURCES_DIR=$RESOURCES_TOP_DIR /$LIBRARY_NAME
127+ UNINSTALLER=$RESOURCES_DIR /uninstall.sh
128+
129+ cat << EOF > $UNINSTALLER
130+ printf "It's recommended you run these steps manually.\n"
131+ printf "If you want to run the full script, open it in\n"
132+ printf "an editor and remove 'exit 1' from below.\n"
133+ exit 1
134+ EOF
135+
77136printf " $LIBRARY_NAME $LIBRARY_VERSION Python Library: Installer\n\n"
78137
79138cd library
80139
81140printf " Installing for Python 2..\n"
82141apt_pkg_install " ${PY2_DEPS[@]} "
83- python setup.py install
142+ python setup.py install > /dev/null
143+ if [ $? -eq 0 ]; then
144+ success " Done!\n"
145+ echo " pip uninstall $LIBRARY_NAME " >> $UNINSTALLER
146+ fi
84147
85148if [ -f " /usr/bin/python3" ]; then
86149 printf " Installing for Python 3..\n"
87150 apt_pkg_install " ${PY3_DEPS[@]} "
88- python3 setup.py install
151+ python3 setup.py install > /dev/null
152+ if [ $? -eq 0 ]; then
153+ success " Done!\n"
154+ echo " pip3 uninstall $LIBRARY_NAME " >> $UNINSTALLER
155+ fi
89156fi
90157
91- cd ..
158+ cd $WD
92159
93160for (( i = 0 ; i < ${# SETUP_CMDS[@]} ; i++ )) ; do
94161 CMD=" ${SETUP_CMDS[$i]} "
@@ -103,12 +170,23 @@ for ((i = 0; i < ${#CONFIG_TXT[@]}; i++)); do
103170 CONFIG_LINE=" ${CONFIG_TXT[$i]} "
104171 if ! [ " $CONFIG_LINE " == " " ]; then
105172 do_config_backup
106- printf " Adding $CONFIG_LINE to $CONFIG \n"
173+ inform " Adding $CONFIG_LINE to $CONFIG \n"
107174 sed -i " s/^#$CONFIG_LINE /$CONFIG_LINE /" $CONFIG
108175 if ! grep -q " ^$CONFIG_LINE " $CONFIG ; then
109176 printf " $CONFIG_LINE \n" >> $CONFIG
110177 fi
111178 fi
112179done
113180
114- printf " Done!\n"
181+ if [ -d " examples" ]; then
182+ if confirm " Would you like to copy examples to $RESOURCES_DIR ?" ; then
183+ inform " Copying examples to $RESOURCES_DIR "
184+ mkdir -p $RESOURCES_DIR
185+ cp -r examples/ $RESOURCES_DIR
186+ echo " rm -r $RESOURCES_DIR " >> $UNINSTALLER
187+ fi
188+ fi
189+
190+ success " \nAll done!"
191+ inform " If this is your first time installing you should reboot for hardware changes to tkae effect.\n"
192+ inform " Find uninstall steps in $UNINSTALLER \n"
0 commit comments