#!/bin/bash

ROOT=""

for arg in "$@"; do
    case "$arg" in
        --root=*)
            ROOT="${arg#*=}"
            ;;
    esac
done

MACHINE_ID_FILE="${ROOT}/etc/machine-id"

if [ -f "$MACHINE_ID_FILE" ] && [ -s "$MACHINE_ID_FILE" ]; then
    exit 0
fi

mkdir -p "$(dirname "$MACHINE_ID_FILE")"

if command -v dbus-uuidgen &>/dev/null; then
    dbus-uuidgen --ensure 2>/dev/null
fi

if [ ! -f "$MACHINE_ID_FILE" ] || [ ! -s "$MACHINE_ID_FILE" ]; then
    od -An -N16 -tx1 /dev/urandom | tr -d ' \n' > "$MACHINE_ID_FILE"
fi

chmod 0644 "$MACHINE_ID_FILE"
