#!/bin/bash
set -eu

PASSWORD="${wizard_admin_password:-}"
PASSWORD_CONFIRM="${wizard_admin_password_confirm:-}"
unset wizard_admin_password wizard_admin_password_confirm

fail() {
    printf '%s\n' "$1" >&2
    if [ -n "${TRIM_TEMP_LOGFILE:-}" ]; then
        printf '%s\n' "$1" >>"$TRIM_TEMP_LOGFILE" 2>/dev/null || true
    fi
    exit 1
}

[ "$PASSWORD" = "$PASSWORD_CONFIRM" ] || fail "管理员密码两次输入不一致。"
[ "${#PASSWORD}" -ge 10 ] || fail "管理员密码至少需要 10 个字符。"
[ "${#PASSWORD}" -le 256 ] || fail "管理员密码不能超过 256 个字符。"
case "$PASSWORD" in
    *$'\n'*|*$'\r'*) fail "管理员密码不能包含换行符。" ;;
esac

mkdir -p "${TRIM_PKGVAR}/run" "${TRIM_PKGVAR}/log"
chmod 0700 "${TRIM_PKGVAR}" "${TRIM_PKGVAR}/run" 2>/dev/null || true
umask 077
printf '%s\n' "$PASSWORD" >"${TRIM_PKGVAR}/admin-password.seed"
unset PASSWORD PASSWORD_CONFIRM
exit 0
