mirror of
https://github.com/weewx/weewx.git
synced 2026-04-17 16:16:56 -04:00
235 lines
8.4 KiB
Bash
Executable File
235 lines
8.4 KiB
Bash
Executable File
#!/bin/sh
|
|
# postinst script for weewx debian package
|
|
# Copyright 2013-2019 Matthew Wall
|
|
#
|
|
# ways this script might be invoked:
|
|
#
|
|
# postinst configure most-recently-configured-version
|
|
# old-postinst abort-upgrade new-version
|
|
# conflictor's-postinst abort-remove in-favour package new-version
|
|
# postinst abort-remove
|
|
# deconfigured's-postinst abort-deconfigure in-favour failed-install-package
|
|
# version [removing conflicting-package version]
|
|
|
|
# abort if any command returns error
|
|
set -e
|
|
|
|
# get debconf stuff so we can set configuration defaults
|
|
. /usr/share/debconf/confmodule
|
|
|
|
cfgfile=/etc/weewx/weewx.conf
|
|
cfgapp=/usr/share/weewx/wee_config
|
|
|
|
# insert any configuration variables into the configuration file
|
|
insert_debconf_variables() {
|
|
if [ ! -f $cfgfile ]; then
|
|
return
|
|
fi
|
|
|
|
db_get weewx/location
|
|
sed -i "/\[Station\]/,/\[.*\]/ s%location =.*%location = \"$RET\"%" $cfgfile
|
|
|
|
db_get weewx/latlon
|
|
lat=$(echo $RET | cut -d, -f1 | sed 's/^ //g' | sed 's/ $//g')
|
|
lon=$(echo $RET | cut -d, -f2 | sed 's/^ //g' | sed 's/ $//g')
|
|
sed -i "/\[Station\]/,/\[.*\]/ s%latitude[ ]*=.*%latitude = $lat%" $cfgfile
|
|
sed -i "/\[Station\]/,/\[.*\]/ s%longitude[ ]*=.*%longitude = $lon%" $cfgfile
|
|
|
|
db_get weewx/altitude
|
|
a=$(echo $RET | cut -d, -f1 | sed 's/^ //g' | sed 's/ $//g')
|
|
u=$(echo $RET | cut -d, -f2 | sed 's/^ //g' | sed 's/ $//g')
|
|
sed -i "/\[Station\]/,/\[.*\]/ s%altitude[ ]*=.*%altitude = $a, $u%" $cfgfile
|
|
|
|
# FIXME: generalize this so it does not have to be modified every time a
|
|
# new station type is added or new station options are added.
|
|
db_get weewx/station_type
|
|
if [ "$RET" != "" ]; then
|
|
sed -i "s%station_type[ ]*=.*%station_type = $RET%" $cfgfile
|
|
if [ "$RET" = "AcuRite" ]; then
|
|
db_get weewx/acurite_model
|
|
sed -i "/\[AcuRite\]/,/\[.*\]/ s%[# ]*model[ ]*=.*% model = $RET%" $cfgfile
|
|
fi
|
|
if [ "$RET" = "CC3000" ]; then
|
|
db_get weewx/cc3000_model
|
|
sed -i "/\[CC3000\]/,/\[.*\]/ s%[# ]*model[ ]*=.*% model = $RET%" $cfgfile
|
|
db_get weewx/cc3000_port
|
|
sed -i "/\[CC3000\]/,/\[.*\]/ s% port[ ]*=.*% port = $RET%" $cfgfile
|
|
fi
|
|
if [ "$RET" = "FineOffsetUSB" ]; then
|
|
db_get weewx/fousb_model
|
|
sed -i "/\[FineOffsetUSB\]/,/\[.*\]/ s%[# ]*model[ ]*=.*% model = $RET%" $cfgfile
|
|
fi
|
|
if [ "$RET" = "TE923" ]; then
|
|
db_get weewx/te923_model
|
|
sed -i "/\[TE923\]/,/\[.*\]/ s%[# ]*model[ ]*=.*% model = $RET%" $cfgfile
|
|
fi
|
|
if [ "$RET" = "Ultimeter" ]; then
|
|
db_get weewx/ultimeter_model
|
|
sed -i "/\[Ultimeter\]/,/\[.*\]/ s%[# ]*model[ ]*=.*% model = $RET%" $cfgfile
|
|
db_get weewx/ultimeter_port
|
|
sed -i "/\[Ultimeter\]/,/\[.*\]/ s% port[ ]*=.*% port = $RET%" $cfgfile
|
|
fi
|
|
if [ "$RET" = "Vantage" ]; then
|
|
db_get weewx/vantage_type
|
|
sed -i "/\[Vantage\]/,/\[.*\]/ s% type[ ]*=.*% type = $RET%" $cfgfile
|
|
if [ "$RET" = "serial" ]; then
|
|
db_get weewx/vantage_port
|
|
sed -i "/\[Vantage\]/,/\[.*\]/ s% port[ ]*=.*% port = $RET%" $cfgfile
|
|
else
|
|
db_get weewx/vantage_host
|
|
sed -i "/\[Vantage\]/,/\[.*\]/ s% host[ ]*=.*% host = $RET%" $cfgfile
|
|
fi
|
|
fi
|
|
if [ "$RET" = "WMR100" ]; then
|
|
db_get weewx/wmr100_model
|
|
sed -i "/\[WMR100\]/,/\[.*\]/ s%[# ]*model[ ]*=.*% model = $RET%" $cfgfile
|
|
fi
|
|
if [ "$RET" = "WMR200" ]; then
|
|
db_get weewx/wmr200_model
|
|
sed -i "/\[WMR200\]/,/\[.*\]/ s%[# ]*model[ ]*=.*% model = $RET%" $cfgfile
|
|
fi
|
|
if [ "$RET" = "WMR300" ]; then
|
|
db_get weewx/wmr300_model
|
|
sed -i "/\[WMR300\]/,/\[.*\]/ s%[# ]*model[ ]*=.*% model = $RET%" $cfgfile
|
|
fi
|
|
if [ "$RET" = "WMR9x8" ]; then
|
|
db_get weewx/wmr9x8_model
|
|
sed -i "/\[WMR9x8\]/,/\[.*\]/ s%[# ]*model[ ]*=.*% model = $RET%" $cfgfile
|
|
db_get weewx/wmr9x8_port
|
|
sed -i "/\[WMR9x8\]/,/\[.*\]/ s% port[ ]*=.*% port = $RET%" $cfgfile
|
|
fi
|
|
if [ "$RET" = "WS1" ]; then
|
|
db_get weewx/ws1_port
|
|
sed -i "/\[WS1\]/,/\[.*\]/ s% port[ ]*=.*% port = $RET%" $cfgfile
|
|
fi
|
|
if [ "$RET" = "WS23xx" ]; then
|
|
db_get weewx/ws23xx_model
|
|
sed -i "/\[WS23xx\]/,/\[.*\]/ s%[# ]*model[ ]*=.*% model = $RET%" $cfgfile
|
|
db_get weewx/ws23xx_port
|
|
sed -i "/\[WS23xx\]/,/\[.*\]/ s%[# ]*port[ ]*=.*% port = $RET%" $cfgfile
|
|
fi
|
|
if [ "$RET" = "WS28xx" ]; then
|
|
db_get weewx/ws28xx_model
|
|
sed -i "/\[WS28xx\]/,/\[.*\]/ s%[# ]*model[ ]*=.*% model = $RET%" $cfgfile
|
|
db_get weewx/ws28xx_frequency
|
|
sed -i "/\[WS28xx\]/,/\[.*\]/ s%[# ]*transceiver_frequency[ ]*=.*% transceiver_frequency = $RET%" $cfgfile
|
|
fi
|
|
fi
|
|
}
|
|
|
|
install_weewxconf() {
|
|
if [ ! -f $cfgfile ]; then
|
|
return
|
|
fi
|
|
|
|
driver=weewx.drivers.simulator
|
|
db_get weewx/station_type
|
|
if [ "$RET" = "AcuRite" ]; then
|
|
driver=weewx.drivers.acurite
|
|
elif [ "$RET" = "CC3000" ]; then
|
|
driver=weewx.drivers.cc3000
|
|
elif [ "$RET" = "FineOffsetUSB" ]; then
|
|
driver=weewx.drivers.fousb
|
|
elif [ "$RET" = "TE923" ]; then
|
|
driver=weewx.drivers.te923
|
|
elif [ "$RET" = "Ultimeter" ]; then
|
|
driver=weewx.drivers.ultimeter
|
|
elif [ "$RET" = "Vantage" ]; then
|
|
driver=weewx.drivers.vantage
|
|
elif [ "$RET" = "WMR100" ]; then
|
|
driver=weewx.drivers.wmr100
|
|
elif [ "$RET" = "WMR200" ]; then
|
|
driver=weewx.drivers.wmr200
|
|
elif [ "$RET" = "WMR300" ]; then
|
|
driver=weewx.drivers.wmr300
|
|
elif [ "$RET" = "WMR9x8" ]; then
|
|
driver=weewx.drivers.wmr9x8
|
|
elif [ "$RET" = "WS1" ]; then
|
|
driver=weewx.drivers.ws1
|
|
elif [ "$RET" = "WS23xx" ]; then
|
|
driver=weewx.drivers.ws23xx
|
|
elif [ "$RET" = "WS28xx" ]; then
|
|
driver=weewx.drivers.ws28xx
|
|
fi
|
|
|
|
units=us
|
|
db_get weewx/units
|
|
if [ "$RET" = "Metric" ]; then
|
|
units=metric
|
|
fi
|
|
|
|
$cfgapp --install --dist-config=$cfgfile --output=$cfgfile --driver=$driver --units=$units --no-prompt --no-backup
|
|
|
|
insert_debconf_variables
|
|
}
|
|
|
|
# use weewx setup utilities to merge new features into existing weewx.conf
|
|
merge_weewxconf() {
|
|
if [ ! -f $cfgfile ]; then
|
|
return
|
|
fi
|
|
|
|
NEWVER=`$cfgapp --version`
|
|
OLDVER=$(get_conf_version $cfgfile)
|
|
if dpkg --compare-versions $OLDVER lt $NEWVER; then
|
|
# this is an old config, so merge it into a new config
|
|
if [ -f $cfgfile.dist ]; then
|
|
DSTVER=$(get_conf_version $cfgfile.dist)
|
|
if dpkg --compare-versions $DSTVER eq $NEWVER; then
|
|
echo saving previous config file as $cfgfile-$OLDVER
|
|
mv $cfgfile $cfgfile-$OLDVER
|
|
echo saving distribution config file as $cfgfile-$NEWVER
|
|
cp -p $cfgfile.dist $cfgfile-$NEWVER
|
|
echo merging previous and distribution into $cfgfile
|
|
$cfgapp --upgrade --config=$cfgfile-$OLDVER --dist-config=$cfgfile-$NEWVER --output=$cfgfile --no-prompt --no-backup
|
|
else
|
|
echo distribution config file is wrong version for merging
|
|
fi
|
|
else
|
|
echo no distribution config with which to merge
|
|
fi
|
|
else
|
|
# this is a new config, so just insert debconf values into it
|
|
echo using debconf configuration values from previous install
|
|
install_weewxconf
|
|
fi
|
|
}
|
|
|
|
# get the version number from the specified file, without the debian revisions
|
|
get_conf_version() {
|
|
echo `grep '^version.*=' $1 | sed -e 's/\s*version\s*=\s*//' | sed -e 's/-.*//'`
|
|
}
|
|
|
|
case "$1" in
|
|
configure)
|
|
if [ "$2" != "" ]; then
|
|
# this is an upgrade so attempt to merge
|
|
merge_weewxconf
|
|
else
|
|
# virgin install so insert debconf values into the config file
|
|
install_weewxconf
|
|
fi
|
|
|
|
# precompile the bytecode
|
|
#python -m compileall /usr/share/weewx
|
|
|
|
# configure for system startup
|
|
update-rc.d weewx defaults 98 > /dev/null
|
|
|
|
# start the weewx daemon
|
|
invoke-rc.d weewx start
|
|
;;
|
|
|
|
abort-remove)
|
|
# precompile the bytecode
|
|
#python -m compileall /usr/share/weewx
|
|
;;
|
|
esac
|
|
|
|
# let debconf know that we are finished
|
|
db_stop
|
|
|
|
#DEBHELPER#
|
|
|
|
exit 0
|