#!/bin/sh
set -e

MACHINE_ID=$(cat /etc/machine-id)

###
# u-boot
if [ -e /usr/sbin/fw_setenv ]; then

    # machine-id
    if [ "$(fw_printenv -n MACHINE_ID)" != "${MACHINE_ID}" ]; then
        echo "[INFO] set machine-id to ${MACHINE_ID}"
        fw_setenv MACHINE_ID "${MACHINE_ID}"
    else
        echo "[INFO] machine-id is okay"
    fi

###
# GRUB
elif [ -e /usr/bin/grub-editenv ]; then
    GRUBENV_FILE="$(grep '^grubenv=' < /etc/rauc/system.conf | cut -d= -f2)"
    # machine-id
    if [ "$(/usr/bin/grub-editenv "$GRUBENV_FILE" list | grep '^MACHINE_ID=' | cut -d= -f2)" != "${MACHINE_ID}" ]; then
        echo "[INFO] set machine-id to ${MACHINE_ID}"
        /usr/bin/grub-editenv "$GRUBENV_FILE" set "MACHINE_ID=${MACHINE_ID}"
    else
        echo "[INFO] machine-id is okay"
    fi

else
    if ! grep -q "systemd.machine_id=${MACHINE_ID}" /mnt/boot/cmdline.txt; then
        echo "[INFO] set machine-id to ${MACHINE_ID}"
        if sed -i "s/systemd.machine_id=[0-9a-fA-F]*/systemd.machine_id=${MACHINE_ID}/" /mnt/boot/cmdline.txt; then
            sed -i "1 s/$/ systemd.machine_id=${MACHINE_ID}/" /mnt/boot/cmdline.txt
        fi
    else
        echo "[INFO] machine-id is okay"
    fi

fi
