#!/bin/sh

rename_user () {
    usermod -l "$NEWNAME" "$FIRSTUSER"
    usermod -m -d "/home/$NEWNAME" "$NEWNAME"
    groupmod -n "$NEWNAME" "$FIRSTGROUP"
    for file in /etc/subuid /etc/subgid; do
        sed -i "s/^$FIRSTUSER:/$NEWNAME:/" "$file"
    done
    if [ -f /etc/sudoers.d/010_pi-nopasswd ]; then
        sed -i "s/^$FIRSTUSER /$NEWNAME /" /etc/sudoers.d/010_pi-nopasswd
    fi
}

if [ $# -eq 3 ]; then
    FIRSTUSER="$1"
    FIRSTGROUP="$1"
    shift
else
    FIRSTUSER="$(getent passwd 1000 | cut -d: -f1)"
    FIRSTGROUP="$(getent group 1000 | cut -d: -f1)"
fi

NEWNAME=$1
NEWPASS=$2

if [ "$FIRSTUSER" != "$NEWNAME" ]; then
    rename_user
fi

if [ -n "$NEWPASS" ]; then
    echo "$NEWNAME:$NEWPASS" | chpasswd -e
fi

if [ -x /usr/bin/raspi-config ] && raspi-config nonint is_pi; then
    HASH=$(grep Serial /proc/cpuinfo | sha256sum | cut -f1 -d' ')
    for file in /etc/chromium/master_preferences /usr/share/firefox/distribution/distribution.ini; do
        if [ ! -f "$file" ]; then
            continue
        fi
        sed -i "s/UNIDENTIFIED/$HASH/g" "$file"
    done
fi

/usr/bin/cancel-rename "$NEWNAME"
