#!/bin/sh
set -e

for arg; do
  case "${arg}" in --*) continue ;; esac

  for dir in /etc/sysusers.d /run/sysusers.d /usr/local/lib/sysusers.d /usr/lib/sysusers.d; do
    [ -f "${dir}/${arg}" ] || continue

    while IFS= read -r line; do
      # Deliberate word-splitting of the line into fields
      # shellcheck disable=SC2086
      set -- $line

      case "${1-}" in
        '#'*|'') continue ;;
        u|u!)    getent passwd "${2}" >/dev/null 2>&1 || adduser --system --no-create-home --disabled-password --quiet --group "${2}" 2>/dev/null || true ;;
        g|g!)    getent group  "${2}" >/dev/null 2>&1 || addgroup --system "${2}" 2>/dev/null || true ;;
        m)       adduser "${2}" "${3}" 2>/dev/null || true ;;
      esac
    done < "${dir}/${arg}"

    break
  done
done
