#!/bin/bash

set -euo pipefail

DMIDECODE=/usr/sbin/dmidecode
SUDO=/bin/sudo

if [[ ! -x "$DMIDECODE" ]]; then
    echo 'dmidecode not installed' >&2
    exit 1
fi

is_placeholder() {
    local val
    val="$(printf '%s' "$1" | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]')"
    case "$val" in
        ''|'tobefilledbyo.e.m.'|'notspecified'|'none'|'systemserialnumber'|'defaultstring') return 0 ;;
        *) return 1 ;;
    esac
}

read_serial() {
    local key="$1" value
    if value="$("$SUDO" "$DMIDECODE" -s "$key" 2>/dev/null)"; then
        while IFS= read -r line; do
            if ! is_placeholder "$line"; then
                printf '%s\n' "$line"
                return 0
            fi
        done <<< "$value"
    fi
    return 1
}

if read_serial baseboard-serial-number; then
    exit 0
fi

if read_serial system-serial-number; then
    exit 0
fi

echo UNKNOWN
