#!/usr/bin/env php
<?php
/**
 * Provisioning des utilisateurs applicatifs déclarés par les modules actifs.
 *
 * Pour chaque module actif déclarant `provision_users` dans son descripteur,
 * crée les utilisateurs manquants et leur attribue les rôles déclarés
 * (idempotent — réexécutable sans effet de bord).
 *
 * Usage:
 *   php exploitation/core/provision_users.php [options]
 *
 * Options:
 *   -q, --quiet        Suppress output
 *   -h, --help         Show this help
 */

require_once dirname(__DIR__) . '/shared/cli_bootstrap.php';

$opts  = getopt('qh', ['quiet', 'help']);
$quiet = isset($opts['q']) || isset($opts['quiet']);
if (isset($opts['h']) || isset($opts['help'])) cli_show_help(__FILE__);

function out(string $msg): void {
    global $quiet;
    if (!$quiet) echo $msg . PHP_EOL;
}

$report = Provisioner::syncAllActive($moduleRegistry, new User());

out("Provisioning : {$report['created']} créé(s), {$report['roles']} rôle(s) attribué(s), {$report['skipped']} existant(s).");
foreach ($report['errors'] as $e) out('  WARN: ' . $e);

exit(empty($report['errors']) ? 0 : 1);
