handle re-install gracefully

This commit is contained in:
maren 2024-04-13 19:35:41 -04:00
parent 06725dfcd5
commit b13b57f15b

View file

@ -1,14 +1,9 @@
#!/bin/sh -e #!/bin/sh -e
# install.sh
installtarget=/usr/local/bin installtarget=/usr/local/bin
chatlogdir=/var/log/bunkchat chatlogdir=/var/log/bunkchat
chatlog=chat.log chatlog=chat.log
if ! [ "$(id -u)" = 0 ]; then
echo "ERROR: please run install with root permission" >&2
exit 1
fi
chattrfailed() { chattrfailed() {
set +e set +e
rm -rf $chatlogdir rm -rf $chatlogdir
@ -18,26 +13,38 @@ chattrfailed() {
exit 1 exit 1
} }
# do this setup first in case chattr fails prep() {
# mk chat directory and touch file mkdir -p $chatlogdir
mkdir $chatlogdir chmod 755 $chatlogdir
chmod 755 $chatlogdir touch ${chatlogdir}/${chatlog}
chmod 666 ${chatlogdir}/${chatlog}
# if chattr +a not supported on this file system, catch error and clean up
chattr +a ${chatlogdir}/${chatlog} || chattrfailed
}
touch ${chatlogdir}/${chatlog} install() {
chmod 666 ${chatlogdir}/${chatlog} cp proclaim heed scry $installtarget
# if chattr +a not supported on this file system catch error and clean up chmod 755 ${installtarget}/proclaim
chattr +a ${chatlogdir}/${chatlog} || chattrfailed chmod 755 ${installtarget}/heed
chmod 755 ${installtarget}/scry
chown root:root ${installtarget}/proclaim
chown root:root ${installtarget}/heed
chown root:root ${installtarget}/scry
cp proclaim heed scry $installtarget echo "SUCCESS! bunkchat installed!"
exit 0
}
chmod 755 ${installtarget}/proclaim # check for root perms
chmod 755 ${installtarget}/heed if ! [ "$(id -u)" = 0 ]; then
chmod 755 ${installtarget}/scry echo "ERROR: please run install with root permission" >&2
exit 1
fi
chown root:root ${installtarget}/proclaim # if chat.log exists, skip prep
chown root:root ${installtarget}/heed if [ -f ${chatlogdir}/${chatlog} ]; then
chown root:root ${installtarget}/scry install
else
prep
echo "SUCCESS! bunkchat installed!" install
exit 0 fi