#!/bin/sh
# Checkmk agent plug-in: operating system information
# Output is tab-separated for safe parsing.
set -eu

name=""
version=""
os_id=""
version_id=""
pretty=""
arch="$(uname -m 2>/dev/null || echo unknown)"
kernel="$(uname -r 2>/dev/null || echo unknown)"

if [ -r /etc/os-release ]; then
    # shellcheck disable=SC1091
    . /etc/os-release
    name="${NAME:-}"
    version="${VERSION:-}"
    os_id="${ID:-}"
    version_id="${VERSION_ID:-}"
    pretty="${PRETTY_NAME:-}"
elif command -v sw_vers >/dev/null 2>&1; then
    name="macOS"
    version="$(sw_vers -productVersion 2>/dev/null || true)"
    os_id="macos"
    version_id="$version"
    pretty="macOS $version"
else
    name="$(uname -s 2>/dev/null || echo unknown)"
    version="$kernel"
    os_id="$(printf '%s' "$name" | tr '[:upper:]' '[:lower:]')"
    version_id="$version"
    pretty="$name $version"
fi

sanitize() {
    printf '%s' "$1" | tr '\t\r\n' '   '
}

printf '<<<os_info:sep(9)>>>\n'
printf '%s\t%s\t%s\t%s\t%s\t%s\t%s\n' \
    "$(sanitize "$name")" \
    "$(sanitize "$version")" \
    "$(sanitize "$os_id")" \
    "$(sanitize "$version_id")" \
    "$(sanitize "$pretty")" \
    "$(sanitize "$arch")" \
    "$(sanitize "$kernel")"
