#!/bin/sh
# postinst script for meshtasticd
#
# see: dh_installdeb(1)

set -e

# summary of how this script can be called:
#        * <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>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package


case "$1" in
    configure|reconfigure)
    # create spi, gpio groups (for udev rules)
    # these groups already exist on Raspberry Pi OS
        getent group spi >/dev/null 2>/dev/null || addgroup --system spi
        getent group gpio >/dev/null 2>/dev/null || addgroup --system gpio
    # create a meshtasticd group and user
        getent passwd meshtasticd >/dev/null 2>/dev/null || adduser --system --home /var/lib/meshtasticd --no-create-home meshtasticd
        getent group meshtasticd >/dev/null 2>/dev/null || addgroup --system meshtasticd
        adduser meshtasticd meshtasticd >/dev/null 2>/dev/null
        adduser meshtasticd spi >/dev/null 2>/dev/null
        adduser meshtasticd gpio >/dev/null 2>/dev/null
    # add meshtasticd user to appropriate groups (if they exist)
        getent group plugdev >/dev/null 2>/dev/null && adduser meshtasticd plugdev >/dev/null 2>/dev/null
        getent group dialout >/dev/null 2>/dev/null && adduser meshtasticd dialout >/dev/null 2>/dev/null
        getent group i2c >/dev/null 2>/dev/null && adduser meshtasticd i2c >/dev/null 2>/dev/null
        getent group video >/dev/null 2>/dev/null && adduser meshtasticd video >/dev/null 2>/dev/null
        getent group audio >/dev/null 2>/dev/null && adduser meshtasticd audio >/dev/null 2>/dev/null
        getent group input >/dev/null 2>/dev/null && adduser meshtasticd input >/dev/null 2>/dev/null


    # migrate /root/.portduino to /var/lib/meshtasticd/.portduino
    # should only run once, upon upgrade from < 2.6.9
    if [ -n "$2" ] && dpkg --compare-versions "$2" lt 2.6.9; then
        if [ -d /root/.portduino ] && [ ! -e /var/lib/meshtasticd/.portduino ]; then
            cp -r /root/.portduino /var/lib/meshtasticd/.portduino
            echo "Migrated meshtasticd VFS from /root/.portduino to /var/lib/meshtasticd/.portduino"
            echo "meshtasticd now runs as the 'meshtasticd' user, not 'root'."
            echo "See https://github.com/meshtastic/firmware/pull/6718 for details"
        fi
    fi

    if [ -d /var/lib/meshtasticd ]; then
        chown -R meshtasticd:meshtasticd /var/lib/meshtasticd
    fi

    if [ -d /etc/meshtasticd ]; then
        chown -R meshtasticd:meshtasticd /etc/meshtasticd
    fi

    if [ -d /usr/share/meshtasticd ]; then
        chown -R meshtasticd:meshtasticd /usr/share/meshtasticd
    fi
    ;;

    abort-upgrade|abort-remove|abort-deconfigure)
    ;;

    *)
        echo "postinst called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.

#DEBHELPER#

exit 0
