Skip to content

Commit b96b7e0

Browse files
committed
Install improvements
1 parent 53dd772 commit b96b7e0

File tree

1 file changed

+95
-17
lines changed

1 file changed

+95
-17
lines changed

install.sh

Lines changed: 95 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,62 @@ CONFIG=/boot/config.txt
44
DATESTAMP=`date "+%Y-%M-%d-%H-%M-%S"`
55
CONFIG_BACKUP=false
66
APT_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

1352
function 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+
4493
apt_pkg_install python-configparser
4594

4695
CONFIG_VARS=`python - <<EOF
@@ -68,27 +117,45 @@ CONFIG_TXT={configtxt}
68117
EOF`
69118
70119
if [ $? -ne 0 ]; then
71-
printf "Error parsing configuration...\n"
120+
warning "Error parsing configuration...\n"
72121
exit 1
73122
fi
74123
75124
eval $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+
77136
printf "$LIBRARY_NAME $LIBRARY_VERSION Python Library: Installer\n\n"
78137
79138
cd library
80139
81140
printf "Installing for Python 2..\n"
82141
apt_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
85148
if [ -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
89156
fi
90157
91-
cd ..
158+
cd $WD
92159
93160
for ((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
112179
done
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

Comments
 (0)